gpt4 book ai didi

mvvm - Xamarin: MVVM交叉信息

转载 作者:行者123 更新时间:2023-12-01 06:07:00 25 4
gpt4 key购买 nike

在Xamarin跨平台应用开发中适配MVVMCross框架,我们有PCL(包含模型和 View 模型)和 View (针对每个平台)如here .

a) Xamarin.mobile(用于获取单组 API 访问权限)位于何处?我认为在 PCL 内部。但是,我看到 Xamarin.mobile 的不同二进制文件(例如:Android 和 IOS),我们是否将所有 Xamarin.mobile 库放在 PCL 中?都是一样的名字,不会有冲突吧?

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

c) 我们在哪里可以使用条件编译适配 MVVMCross?我猜是在模型中,但它是仅用于文件访问还是也可以根据目标平台通过将其放置在 PCL 上来用于显示 View 项(Android 上的 toast 消息)?

(如有不当请见谅,只是收集了一些关于 MVVMCross 和 Xamarin.mobile 的信息,并有一些推理/困惑)

谢谢!

问候,索拉夫

最佳答案

a) Where does the Xamarin.mobile (for gaining single set of API access) reside? I think inside the PCL. But, i see different binaries for Xamarin.mobile (eg: Android and IOS), do we put all the Xamarin.mobile library inside the PCL? They all have the same name, won't there be any conflict?

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

对于许多 Xamarin.Mobile 功能(以及许多 Xamarin.Mobile 未涵盖的功能),MvvmCross 提供了插件 - 您可以在 https://www.nuget.org/packages?q=mvvmcross 中看到其中的一些功能。

对于 X.M 拥有但我们尚未包含的其余几种方法 - 例如联系人查找 - 然后您可以:

  • 通过编写可访问 Xamarin.Mobile 函数的可移植接口(interface)(外观)来访问它们
  • 写一个新的插件来实现它们

有关插件的更多信息:

b) Where do we keep codes like accessing bluetooth (not available in Xamarin.mobile)?

通常这与上面的方法相同。例如,对于蓝牙,请查看 Sphero 示例:

Using MVVMCross decouples the view and business logic, so do all the codes for creating view items after an event has occured (btn click), reside in the view?

是的——如果它是一个“ View 关注点”,那么它属于 View (这与任何 Mvvm 代码相同)

c) Where can we use the conditional compilation adapting MVVMCross?

我尽量不使用“条件编译”,包括#ifpartial classes。有时我会在特定于插件平台的模块中使用它,但通常我会尝试使用继承或抽象来代替——这是因为我经常使用“重构”和“单元测试”等工具,而条件编译根本不会使用这些。

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

关于mvvm - Xamarin: MVVM交叉信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com