Xamarin:MVVMCross信息

Sau*_*ran 3 mvvm portable-class-library mvvmcross xamarin xamarin.mobile

在Xamarin跨平台应用程序开发中调整MVVMCross框架,我们有PCL(包含模型和视图模型)和View(对于每个平台),如此处所示.

a)Xamarin.mobile(用于获取单一API访问集)驻留在哪里?我想在PCL里面.但是,我看到Xamarin.mobile的不同二进制文件(例如:Android和IOS),我们是否将所有Xamarin.mobile库放在PCL中?它们都有相同的名字,不会有任何冲突吗?

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

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

(如果不恰当的借口,只是收集了MVVMCross和Xamarin.mobile的一些信息,并考虑到了一些推理/困惑)

谢谢!

此致,Saurav

Stu*_*art 5

a)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的条件编译?

我尽量不使用包括#if和的'条件编译' partial classes.有时我会在特定于插件平台的模块中使用它,但通常我会尝试使用继承或抽象 - 原因是因为我使用了像'重构'和'单元测试'这样的工具而且条件编译根本没有与这些合作.

有关使用PCL而不是文件链接和其他基于项目的技术的好处(和缺点)的更多信息,请参阅使用可移植类库而不是使用"添加为链接"的优势是什么?