3

在Xamarin跨平台应用程序开发中调整MVVMCross框架,我们得到PCL(包含模型和视图模型)和View(针对每个平台),如hereXamarin:MVVMCross info

a)Xamarin.mobile(获得单一API访问权限)驻留在哪里?我认为在PCL内部。但是,我看到Xamarin.mobile的不同二进制文件(例如:Android和IOS),我们是否将所有Xamarin.mobile库放入PCL?他们都有相同的名字,不会有冲突吗?

b)我们在哪里保存代码,如访问蓝牙(Xamarin.mobile中不可用)?使用MVVMCross解耦视图和业务逻辑,因此在事件发生后(btn点击)创建视图项的所有代码都驻留在视图中?

c)我们可以在哪里使用适应MVVMCross的条件编译?我猜是在模型中,但是它只用于文件访问,还是可以根据目标平台将它放在PCL上,用于显示视图项目(Android上的Toast消息)?

(借口如有不当之处,就聚集在MVVMCross和Xamarin.mobile一些信息和脑子里想的一些推理/混淆)

谢谢!

问候, Saurav

+0

请试着问每个问题一个问题 - 这有助于人(自己喜欢)稍后搜索答案。这里真的是** 3个问题**。谢谢:) – Stuart

回答

5

一)在什么地方Xamarin.mobile(为获得单套API访问)居住?我认为在PCL内部。但是,我看到Xamarin.mobile的不同二进制文件(例如:Android和IOS),我们是否将所有Xamarin.mobile库放入PCL?他们都有相同的名字,不会有冲突吗?

Xamarin.Mobile不是可移植的代码 - 它不能直接从PCL调用。

有关(其中Xamarin.Mobile不包括和很多很多的功能)许多Xamarin.Mobile功能则MvvmCross提供插件 - 你可以看到一些在https://www.nuget.org/packages?q=mvvmcross

对于XM有,但剩下的几个方法我们还没有包括 - 例如联系人查找 - 那么你可以:

  • 访问通过写一个便携式接口(门面)的Xamarin.Mobile功能,通过它来访问它们
  • 写一个新的插件来实现它们

更多关于插件:

b)如果我们继续像代码访问蓝牙(在Xamarin.mobile不可用)?

通常,这与上述相同。例如,对于蓝牙看看的SPHERO例如:

使用MVVMCross解耦视图和业务逻辑,所以创建视图的项目做的所有代码事件发生后(btn点击),驻留在视图中?

是 - 如果它是一个“观点的关注”,然后将其所属的视图(这是与任何MVVM代码)

c)我们在哪里可以使用条件编译适应MVVMCross?

我尽量不要使用'条件编译',包括#ifpartial classes。有时我会在插件平台特定的模块中使用它,但通常我会尝试使用继承或抽象 - 原因是因为我使用了诸如“重构”和“单元测试”之类的工具,而条件编译根本没有与这些工作。

更多关于使用PCLS而不是文件链接和其他基于项目的技术的优点(和缺点),见What is the advantage of using portable class libraries instead of using "Add as Link"?

+0

非常感谢我正在寻找的准确答案。非常感谢您的帮助。 –