MVVMCross通过多种机制支持平台特定的代码,从而使开发人员可以创建跨平台应用程序,同时仍利用本机平台功能。这是MVVMCross如何促进平台特定代码的详细概述:
1。关注的分离**
MVVMCross应用程序通常分为两个主要部分:一个核心项目和特定于平台的UI项目。核心项目通常以便携式类库(PCL)或.NET标准库实施,其中包含用于平台特定服务的业务逻辑,模型,查看模型和接口。这种分离允许在平台上进行最大的代码重复使用,同时将UI项目中隔离的平台特定代码[2] [7]。2。控制(IOC)和依赖注入**
MVVMCROSS使用IOC容器来管理依赖关系。这使开发人员可以在平台特定的项目中注册特定于平台的服务,并将其注入核心项目的视图模型。例如,如果应用程序需要访问相机,则核心项目可以为摄像机访问定义接口,并且每个平台特定的项目都可以提供其自己的该接口的实现。然后,IOC容器在运行时解决这些依赖项,以确保使用正确的平台特定服务[2] [8] [11]。3。特定于平台的服务**
本机UI项目中实施了平台特定的服务。这些服务在每个平台项目的设置类中注册。设置类负责在IOC容器中引导MVVMCROSS和注册平台特定服务。这允许核心项目中的查看模型使用平台特定功能,而无需直接引用平台特定的API [2] [7]。4。插件框架**
MVVMCross包括一个插件框架,该插件框架允许开发人员轻松地将特定于平台的功能集成到其应用程序中。插件可以提供GPS位置,本地化,传感器等功能。这些插件已在IOC容器中注册,从而使视图模型能够通过依赖项注入访问特定于平台的功能。该框架还支持用于测试目的的模拟实现[4] [11]。5。可自定义的绑定引擎**
MVVMCross提供了可自定义的绑定引擎,该引擎允许开发人员为平台特定视图创建自定义绑定。当使用不支持标准数据绑定机制的天然控件时,此功能特别有用。通过定义自定义绑定,开发人员可以确保将其视图模型正确连接到特定于平台的视图[4]。6。平台主持人**
MVVMCross使用特定于平台的演示者(例如`imvxiosviewPresenter`,`imvxandroidviewpresenter“)来管理每个平台上如何显示视图。这些主持人允许自定义演示文稿逻辑,使开发人员能够使UI行为适应特定平台的要求[3]。总而言之,MVVMCross通过提供一种结构化方法来支持平台特定的代码,以将业务逻辑与特定于平台的实现,利用IOC和依赖项注入服务管理以及提供可自定义的绑定和插件框架以集成本地功能。这使开发人员能够最大程度地提高代码重复使用,同时仍提供特定于平台的用户体验。
引用:[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-peeds-peeds-xamarin-development-plevelopment-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://stackoverflow.com/questions/14337063/platform-specific-ioc-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phote-phote-build-mvvm-apps-with-with-xamarin-and-mvvmcross