In MVVMCross V3 wurden mehrere signifikante Änderungen in Bezug auf die ViewModel -Konstruktion eingeführt, die darauf abzielte, die Testbarkeit und Verwendbarkeit für Entwickler zu verbessern. Hier sind die wichtigsten Änderungen:
1. Konstruktor-basierte Abhängigkeitsinjektion: Eine der Hauptänderungen war die Einführung der Konstruktor-basierten Abhängigkeitsinjektion. Dies ermöglichte es den Entwicklern, Abhängigkeiten direkt in den Konstruktor des ViewModel injizieren zu können, wodurch die Verwaltung von Abhängigkeiten und die Verbesserung der Testbarkeit erleichtert werden. Zuvor wurden Abhängigkeiten häufig mit anderen Mitteln verwaltet, was weniger einfach sein konnte.
2. Navigation mit typisierten Navigationsklassen: MVVMCROSS V3 führte ein neues Navigationssystem vor, das typisierte Navigationsklassen verwendete. Dies bedeutete, dass Entwickler anstatt direkt zu Ansichten zu navigieren, mit starken Klassen zwischen ViewModels navigieren konnten. Dieser Ansatz vereinfacht die plattformübergreifende Navigation, indem sie plattformspezifische Details abstrahiert.
3.. Rettung und Nachladen von ViewModel -Zustand für das Grabstonieren: Ein weiteres bedeutendes Merkmal, das in V3 eingeführt wurde, war die Fähigkeit, den Stand der ViewModel -Status zu retten und neu zu laden. Dies war besonders nützlich für die Behandlung von Tomstein -Szenarien, in denen eine Anwendung aufgrund des Betriebssystems aufgrund von Speicherbeschränkungen beendet und dann wiederhergestellt wurde, wenn der Benutzer dorthin zurückkehrt. Durch das Speichern des ViewModel -Staates könnten Anträge ihren aktuellen Zustand beibehalten, auch nachdem sie gekündigt und neu gestartet wurden.
4. Navigationsparameter übergeben an `init ()` Methode: In älteren Versionen von MVVMCross wurden Navigationsparameter direkt an den Konstruktor des ViewModel übergeben. Beginnend mit V3 wurden diese Parameter stattdessen an die Methode "Init ()" übergeben. Diese Änderung ermöglichte es dem Konstruktor, ausschließlich für die Abhängigkeitsinjektion verwendet zu werden, sodass der Code sauberer und wartbarer wurde. Die "init ()" -Methode wurde zu dem Ort, an dem Navigationsparameter verarbeitet wurden, was eine flexiblere Initialisierungslogik ermöglichte.
Insgesamt lieferten diese Änderungen in MVVMcross V3 eine strukturiertere und wartbare Möglichkeit, ViewModels zu konstruieren und zu verwalten, wodurch die allgemeine Entwicklungserfahrung für plattformübergreifende Anwendungen verbessert wurde.
Zitate:[1] https://www.mvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvmcross/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/customizing-using-app-setup
[5] https://www.mvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-steeed-models-if-te-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvmcross-does-showviewmodel-alway-construct-new-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvmcross-bindings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvmcross/blob/develop/changelog.md