使用 Xamarin 抽象 NS* 对象
本文关键字:对象 NS 抽象 Xamarin 使用 | 更新日期: 2023-09-27 18:35:22
我的背景是C#。我已经开始在OS X上使用Xamarin Studio来编写iOS应用程序。这是一个小应用程序,我想在完成iOS版本后为Android发布。
我正在尝试使用NSUserDefaults
来存储应用程序中使用的设置。我的第一遍是使用NSDictionary
并保存字典。Xamarin 文档显示了从 IDictionary
和 IDictionary<NSObject, NSObject>
继承NSDictionary
。
在我的存储库类中抽象出NSObject
是否值得努力?然后,我将在我的业务逻辑中使用本机 C# 类型,但让我的存储库/模型能够在加载和保存数据时与NSObject
进行转换。
回到我关于IDictionary
的第一段,我应该让存储库与IDictionary<NSObject, NSObject>
相互转换,但在代码库的其余部分使用IDictionary<string, string>
吗?我有一种感觉,如果我尝试这种策略,我将打一场艰苦的战斗。
在这一点上,我有点散漫,所以对平台很陌生,我还不确定要问什么问题。也许总结我的困惑的一种方法是"什么时候应该使用本机 C# 类型,什么时候应该使用 NS* 类型?
是否要尝试重用尽可能多的代码,以便将应用程序移植到其他 Xamarin 支持的平台?
如果是这样,请花点时间尽可能多地从代码中抽象出 NS* 类型。
如果没有,不要担心将它们抽象出来,让自己的事情变得更简单。无缘无故的抽象增加了不必要的复杂性。
也许你可以抽象地思考System.IO.IsolatedStorage.IsolatedStorageSettings
内部的NSUserDefaults
,它不是在iOS或Android中实现的,但通过这样做,您也可以将此代码移植到所有Windows平台。
您可以在此处看到 Moonlight 实现以将其用作模板:
https://github.com/mono/moon/blob/master/class/System.Windows/System.IO.IsolatedStorage/IsolatedStorageSettings.cs