I MVVMCROSS V3 ble det introdusert flere signifikante endringer angående ViewModel Construction, som hadde som mål å forbedre testbarheten og brukervennligheten for utviklere. Her er de viktigste endringene:
1. Konstruktørbasert avhengighetsinjeksjon: En av de største endringene var introduksjonen av konstruktørbasert avhengighetsinjeksjon. Dette tillot utviklere å injisere avhengigheter direkte i ViewModels konstruktør, noe som gjorde det lettere å håndtere avhengigheter og forbedre testbarheten. Før dette ble avhengigheter ofte administrert på andre måter, noe som kan være mindre greie.
2. Navigasjon ved hjelp av typede navigasjonsklasser: MVVMCROSS V3 introduserte et nytt navigasjonssystem som brukte skrevne navigasjonsklasser. Dette betydde at i stedet for å navigere direkte til visninger, kunne utviklere navigere mellom ViewModels ved hjelp av sterkt typede klasser. Denne tilnærmingen forenklet navigasjon på tvers av plattformer ved å abstrahere bort plattformspesifikke detaljer.
3. Lasting og omlasting av ViewModel State for Tombstoning: En annen betydelig funksjon introdusert i V3 var muligheten til å redde og laste inn ViewModel State. Dette var spesielt nyttig for å håndtere "gravstoning" -scenarier, der en applikasjon kan avsluttes av operativsystemet på grunn av minnekrav, og deretter gjenopprettes når brukeren kommer tilbake til den. Ved å lagre ViewModel -tilstanden, kan applikasjoner opprettholde sin nåværende tilstand selv etter å ha blitt avsluttet og startet på nytt.
4. Navigasjonsparametere overført til `init ()` Metode: I eldre versjoner av MVVMCROSS ble navigasjonsparametere sendt direkte til ViewModels konstruktør. Imidlertid, fra V3, ble disse parametrene i stedet sendt til `init ()` metoden. Denne endringen gjorde det mulig å bruke konstruktøren utelukkende til avhengighetsinjeksjon, noe som gjør koden renere og mer vedlikeholdbar. Metoden `init ()` ble stedet der navigasjonsparametere ble behandlet, noe som muliggjorde mer fleksibel initialiseringslogikk.
Totalt sett ga disse endringene i MVVMCROSS V3 en mer strukturert og vedlikeholdbar måte å konstruere og administrere ViewModels, forbedre den generelle utviklingsopplevelsen for applikasjoner på tvers av plattformer.
Sitasjoner:[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/customizing-using-apps-av-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-ere-desing-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-aways-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