In MVVMCROSS V3, sono stati introdotti diversi cambiamenti significativi per quanto riguarda la costruzione di ViewModel, che mirava a migliorare la testabilità e l'usabilità per gli sviluppatori. Ecco le modifiche chiave:
1. Iniezione di dipendenza basata sul costruttore: uno dei principali cambiamenti è stata l'introduzione dell'iniezione di dipendenza basata sul costruttore. Ciò ha permesso agli sviluppatori di iniettare dipendenze direttamente nel costruttore di ViewModel, rendendo più semplice la gestione delle dipendenze e migliorare la testimonianza. Prima di questo, le dipendenze venivano spesso gestite con altri mezzi, il che potrebbe essere meno semplice.
2. Navigazione mediante classi di navigazione digitata: MVVMCROSS V3 ha introdotto un nuovo sistema di navigazione che utilizzava le classi di navigazione digitata. Ciò significava che invece di navigare direttamente alle viste, gli sviluppatori potevano navigare tra ViewModels usando classi fortemente tipi. Questo approccio ha semplificato la navigazione multipiattaforma estraggendo i dettagli specifici della piattaforma.
3. Salvataggio e ricarica dello stato ViewModel per Tombstoning: un'altra caratteristica significativa introdotta in V3 è stata la capacità di salvare e ricaricare lo stato ViewModel. Ciò è stato particolarmente utile per la gestione di scenari "tombstoning", in cui un'applicazione potrebbe essere terminata dal sistema operativo a causa di vincoli di memoria, e quindi ripristinato quando l'utente lo ritorna. Salvando lo stato di ViewModel, le applicazioni potrebbero mantenere il loro stato attuale anche dopo essere state terminate e riavviate.
4. Parametri di navigazione passati al metodo `init ()`: nelle versioni precedenti di MVVMCRoss, i parametri di navigazione sono stati passati direttamente al costruttore di ViewModel. Tuttavia, a partire da V3, questi parametri sono stati invece passati al metodo `init ()`. Questo cambiamento ha permesso di utilizzare il costruttore esclusivamente per l'iniezione di dipendenza, rendendo il codice più pulito e più mantenebile. Il metodo `init ()` è diventato il luogo in cui sono stati elaborati i parametri di navigazione, consentendo una logica di inizializzazione più flessibile.
Nel complesso, questi cambiamenti in MVVMCROSS V3 hanno fornito un modo più strutturato e gestibile di costruire e gestire i modi di vista, migliorando l'esperienza di sviluppo complessiva per applicazioni multipiattaforma.
Citazioni:[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/release
[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-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-howviewmodel-always-struct-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