Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross V3引入了有关ViewModel构造的哪些更改


MVVMCross V3引入了有关ViewModel构造的哪些更改


在MVVMCROSS V3中,引入了有关ViewModel构造的几项重大变化,旨在提高开发人员的可检验性和可用性。这是关键更改:

1。基于构造函数的依赖注入:主要变化之一是引入基于构造函数的依赖注入。这使开发人员可以将依赖性直接注入ViewModel的构造函数,从而更容易管理依赖关系并提高可测试性。在此之前,通常通过其他方式管理依赖项,这可能不那么简单。

2。使用打字导航类的导航:MVVMCROSS V3引入了使用打字导航类的新导航系统。这意味着开发人员可以使用强大的类在视图模型之间导航,而不是直接导航到视图。这种方法通过抽象特定于平台的细节来简化跨平台导航。

3。用于墓碑的保存和重新加载视图:V3中引入的另一个重要功能是保存和重新加载ViewModel状态的能力。这对于处理“墓碑”方案特别有用,在该方案中,由于内存约束,操作系统可能终止应用程序,然后在用户返回时恢复。通过保存ViewModel状态,即使被终止和重新启动后,应用程序也可以维护其当前状态。

4。导航参数传递给`init()`方法:在MVVMCross的较旧版本中,导航参数直接传递到ViewModel的构造函数。但是,从v3开始,这些参数被传递给`init()`方法。此更改允许构造函数仅用于依赖注入,从而使代码清洁器和更可维护。 `Init()`方法成为处理导航参数的地方,从而允许更灵活的初始化逻辑。

总体而言,MVVMCross V3的这些变化提供了一种更具结构化和可维护的方式来构建和管理ViewModels,从而增强了跨平台应用程序的整体开发体验。

引用:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_do_do_you_manage_manage_the_the_inthe/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-usion-app-anp-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-usis-usis-usis-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-always-construct-new-inew-inew-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-cross-indings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md