使用Xamarin抽象NS *对象

时间:2013-10-15 15:46:28

标签: c# ios xamarin

我的背景是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 *类型?”

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

也许你可以抽象地考虑NSUserDefaults中的System.IO.IsolatedStorage.IsolatedStorageSettings,它不是在iOS或Android中实现的,但通过这样做,您也可以将此代码移植到所有Windows平台。

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

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