MVVMCross旨在通过将应用程序逻辑分为两个主要部分来有效地处理特定于平台的代码:核心项目和特定于平台的项目。核心项目通常是.NET标准库,其中包含用于平台特定服务的业务逻辑,视图模型,模型和接口。这允许在Android,iOS和Windows等不同平台上进行最大代码共享。
###特定于平台的项目
每个平台特定的项目(例如Xamarin.android,Xamarin.ios)都包含用户界面和平台特定服务的实现。这些项目负责使用设置类初始化MVVMCROSS框架和注册平台特定的服务。设置类充当MVVMCross的引导程序,使开发人员可以自定义每个平台的框架行为。
###控制(IOC)和依赖注入倒置
MVVMCROSS使用控制(IOC)容器的反转来管理整个应用程序的依赖关系。这允许注册特定于平台的服务并将其注入核心项目的逻辑中。例如,如果应用程序需要访问GPS位置服务,则可以在平台特定的设置类中注册GPS服务,然后注入视图模型或核心项目的其他部分。
###自定义平台行为
开发人员可以通过在设置类中的覆盖方法来自定义平台特定的行为。例如,在Android上,您可以覆盖`mvxandroidSetup`注册Android特定服务或处理Android特定的生命周期事件的方法。同样,在iOS上,您将使用“ mvxiossetup”来处理特定于iOS的初始化和服务注册。
###查看主持人
MVVMCROSS还提供了视图演示者,这些主持人负责决定如何在每个平台上呈现视图。这允许自定义UI演示文稿逻辑,例如,根据平台的约定,将视图或作为导航堆栈的一部分显示。
###插件和扩展
MVVMCROSS提供了一个插件框架,该插件框架使开发人员可以轻松地集成第三方插件,以提供本地化,传感器等常见功能。这些插件可以在多个平台上使用,从而进一步减少了对平台特定代码的需求。
总之,MVVMCross通过提供将共享逻辑与特定于平台特定的实现分开的结构化方法来处理平台特定的代码。它使用IOC和依赖注入来管理平台服务,允许通过设置类自定义,并支持插件以扩展跨平台的功能。
引用:[1] https://github.com/mvvmcross/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://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platform-specific-ioc-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-servific-service-causes-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-usion-app-anp-setup