gpt4 book ai didi

c# - 如何在可移植类库中使用PCLStorage?

转载 作者:行者123 更新时间:2023-11-30 17:48:39 32 4
gpt4 key购买 nike

我有一个可移植类库,我将用于 Windows 8 和手机应用程序。所以我创建了一个通用的 View 模型,现在我想处理 View 模型中的存储功能。我找到了一个用于处理这种情况的 PCLStorage 包。

我在 Windows 8 上有这样的代码,现在我想使用 PCLStorage 在 PCL 中编写它。

 public static object LoadSettings(string key)
{
if (Windows.Storage.ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
{
if (Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] != null)
{
return Windows.Storage.ApplicationData.Current.LocalSettings.Values[key];
}
else
{
return null;
}
}
else
{
return null;
}
}

我找到了一种方法,我已经为 View 模型中使用的存储创建了一个接口(interface)。并创建了一个类来处理各自项目中电话和地铁的存储。当我创建 MainViewModel 的对象时,我也传递了存储对象。

所以我想知道,这样对吗?

最佳答案

我相信最简单的模式是在平台的“特定”“外壳”上的容器 Bootstrap 中注册当前平台被告实现,并在构造函数中获取依赖项或者简单地跳过 IoC 的东西并手动实例化东西

using MyInfrastructureAssembly.Interfaces;
public MyApp: App // MyNewPlatFormApp
{
public override Initiaze()
{
var bootsrapper = new Boostrapper(MyIoC.Current);
}
}
public class Bootsrapper: TheBootStrapperOfMyIoc
{
public Bootsrapper(IocContainer container)
{
Container = container;
}
public override Register()
{
Container.Register<IMyAbstractedService,MyPlatformDependantService>();
}
}
MyPlatformDependantService : IMyAbstractedService
{
public object Get(); // IMyAbstractedService.Get()
}
public class MyViewModel:ViewModelBase
{
IMyService MyService {get;set;}

MyViewModel(IMyAbstractedService myServcice)
{
MyService = myService;
}

public object Thing // LazyThing provided by IMyAbstractedService
{
get
{
if(_thing!=null)
return _thing;
return _thing = GetIt();
}
set
{
if(Equals(value,_thing)) return;
_thing = value;
base.NotifyMagicalChanges()
}
}
public void GetIt()
{
MyServcie.Get();
}
}

静态版本:在 LinqPad 上运行

enter code here
private async void CheckIfExist()
{
try
{
var isoStore = FileSystem.Current.LocalStorage;

var folder = await isoStore.CreateFolderAsync("xxx",
CreationCollisionOption.ReplaceExisting);

ExistenceCheckResult result = await isoStore.CheckExistsAsync("xxx");

switch (result)
{
case (ExistenceCheckResult.FolderExists):
Console.WriteLine(":)"); break;
case (ExistenceCheckResult.NotFound):
Console.WriteLine(":("); break;
}
}
catch (Exception)
{
Console.WriteLine(":<");
}
}'

关于c# - 如何在可移植类库中使用PCLStorage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602738/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com