使用 Xamarin 抽象 NS* 对象

本文关键字:对象 NS 抽象 Xamarin 使用 | 更新日期: 2023-09-27 18:35:22

我的背景是C#。我已经开始在OS X上使用Xamarin Studio来编写iOS应用程序。这是一个小应用程序,我想在完成iOS版本后为Android发布。

我正在尝试使用NSUserDefaults来存储应用程序中使用的设置。我的第一遍是使用NSDictionary并保存字典。Xamarin 文档显示了从 IDictionaryIDictionary<NSObject, NSObject> 继承NSDictionary

在我的存储库类中抽象出NSObject是否值得努力?然后,我将在我的业务逻辑中使用本机 C# 类型,但让我的存储库/模型能够在加载和保存数据时与NSObject进行转换。

回到我关于IDictionary的第一段,我应该让存储库与IDictionary<NSObject, NSObject>相互转换,但在代码库的其余部分使用IDictionary<string, string>吗?我有一种感觉,如果我尝试这种策略,我将打一场艰苦的战斗。

在这一点上,我有点散漫,所以对平台很陌生,我还不确定要问什么问题。也许总结我的困惑的一种方法是"什么时候应该使用本机 C# 类型,什么时候应该使用 NS* 类型?

使用 Xamarin 抽象 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