I MVVMCROSS V3 infördes flera betydande förändringar när det gäller synmodellkonstruktion, som syftade till att förbättra testbarhet och användbarhet för utvecklare. Här är de viktigaste förändringarna:
1. Konstruktörsbaserad beroendeinjektion: En av de största förändringarna var införandet av konstruktörsbaserad beroendeinjektion. Detta gjorde det möjligt för utvecklare att injicera beroenden direkt i ViewModels konstruktör, vilket gjorde det enklare att hantera beroenden och förbättra testbarhet. Innan detta hanterades beroenden ofta på andra medel, vilket kan vara mindre enkelt.
2. Navigering med hjälp av typnavigeringsklasser: MVVMCross V3 introducerade ett nytt navigationssystem som använde typnavigeringsklasser. Detta innebar att istället för att navigera direkt till vyer, kunde utvecklare navigera mellan Viewmodels med starkt typade klasser. Detta tillvägagångssätt förenklade navigering över plattformar genom att abstrahera bort plattformsspecifika detaljer.
3. Spara och ladda om ViewModel State för gravstoning: En annan betydande funktion som introducerades i V3 var förmågan att spara och ladda om ViewModel State. Detta var särskilt användbart för att hantera "gravstoning" -scenarier, där en applikation kan avslutas av operativsystemet på grund av minnesbegränsningar och sedan återställas när användaren återvänder till den. Genom att spara ViewModel -tillståndet kan applikationer behålla sitt nuvarande tillstånd även efter att ha avslutats och startats om.
4. Navigationsparametrar överfördes till 'init ()' -metoden: I äldre versioner av MVVMCross överfördes navigationsparametrar direkt till ViewModels konstruktör. Men med början med V3 överfördes dessa parametrar istället till metoden "init ()". Denna förändring gjorde det möjligt att användas enbart för beroendeinjektion, vilket gör koden renare och mer underhållbar. Metoden "init ()" blev platsen där navigationsparametrarna behandlades, vilket möjliggjorde mer flexibel initialiseringslogik.
Sammantaget gav dessa förändringar i MVVMCross V3 ett mer strukturerat och underhållbart sätt att konstruera och hantera ViewModels, vilket förbättrade den övergripande utvecklingsupplevelsen för applikationer för plattformar.
Citeringar:[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-app-and-setup
[5] https://www.mvvmcross.com/blog/
]
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-stances
[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/mvvmcross/blob/develop/changelog.md