1

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

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

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

回到我关于 的第一段IDictionary,我是否应该让存储库转换为/从IDictionary<NSObject, NSObject>IDictionary<string, string>在代码库的其余部分中使用?我有一种感觉,如果我尝试这种策略,我将面临一场艰苦的战斗。

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

4

2 回答 2

1

也许您可以抽象地认为NSUserDefaults内部 a System.IO.IsolatedStorage.IsolatedStorageSettings,它没有在 iOS 或 Android 中实现,但通过这样做,您也可以将此代码移植到所有 Windows 平台。

您可以在此处查看 Moonlight 实现以将其用作模板:

https://github.com/mono/moon/blob/master/class/System.Windows/System.IO.IsolatedStorage/IsolatedStorageSettings.cs

于 2013-10-15T17:56:50.793 回答
1

您是否要尝试重用尽可能多的代码来将您的应用程序移植到其他 Xamarin 支持的平台?

如果是这样,那么请花时间从代码中尽可能多地抽象出 NS* 类型。

如果没有,不要担心将它们抽象出来,让事情变得更简单。抽象无缘无故地增加了不必要的复杂性。

于 2013-10-15T15:49:37.053 回答