Dans MVVMCROSS V3, plusieurs changements significatifs ont été introduits concernant la construction de ViewModel, qui visait à améliorer la testabilité et la convivialité pour les développeurs. Voici les changements clés:
1. Injection de dépendance basée sur le constructeur: L'un des principaux changements a été l'introduction d'une injection de dépendance basée sur le constructeur. Cela a permis aux développeurs d'injecter des dépendances directement dans le constructeur de ViewModel, ce qui facilite la gestion des dépendances et l'amélioration de la testabilité. Avant cela, les dépendances étaient souvent gérées par d'autres moyens, ce qui pourrait être moins simple.
2. Navigation à l'aide de classes de navigation typées: MVVMCROSS V3 a introduit un nouveau système de navigation qui a utilisé des classes de navigation typées. Cela signifiait qu'au lieu de naviguer directement vers des vues, les développeurs pouvaient naviguer entre ViewModels en utilisant des classes fortement typées. Cette approche a simplifié la navigation multiplateforme en abstraction des détails spécifiques à la plate-forme.
3. Économie et rechargement de l'état ViewModel pour Tombstoning: Une autre caractéristique significative introduite dans V3 était la capacité d'économiser et de recharger l'état de ViewModel. Cela a été particulièrement utile pour gérer les scénarios de "tombeson", où une application peut être résiliée par le système d'exploitation en raison de contraintes de mémoire, puis restaurée lorsque l'utilisateur y retourne. En économisant l'état de ViewModel, les applications pourraient maintenir leur état actuel même après avoir été interrompu et redémarré.
4. Paramètres de navigation transmis à `INIT () 'Méthode: Dans les anciennes versions de MVVMCROSS, les paramètres de navigation ont été transmis directement au constructeur de ViewModel. Cependant, en commençant par V3, ces paramètres ont plutôt été transmis à la méthode `Init () '. Ce changement a permis au constructeur d'être utilisé uniquement pour l'injection de dépendance, ce qui rend le code plus propre et plus maintenable. La méthode `Init () 'est devenue l'endroit où les paramètres de navigation ont été traités, permettant une logique d'initialisation plus flexible.
Dans l'ensemble, ces changements dans MVVMCROSS V3 ont fourni une manière plus structurée et maintenable de construire et de gérer des modes de vue, améliorant l'expérience globale de développement des applications multiplateformes.
Citations:[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_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/custumising-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareensineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[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