Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Milyen változásokat vezettek be az MVVMCross V3 -ban a ViewModel Construction -nál


Milyen változásokat vezettek be az MVVMCross V3 -ban a ViewModel Construction -nál


Az MVVMCross V3 -ban számos jelentős változást vezettek be a ViewModel Construction vonatkozásában, amelynek célja a fejlesztők tesztelhetőségének és használhatóságának javítása. Itt vannak a legfontosabb változások:

1. konstruktor-alapú függőségi injekció: Az egyik fő változás a konstruktor-alapú függőségi injekció bevezetése volt. Ez lehetővé tette a fejlesztők számára, hogy a függőségeket közvetlenül a ViewModel konstruktorába injektálják, megkönnyítve a függőségek kezelését és a tesztelhetőség javítását. Ezt megelőzően a függőségeket gyakran más eszközökkel kezelik, amelyek kevésbé lehetnek egyértelműek.

2. Navigáció gépelt navigációs osztályok segítségével: Az MVVMCross V3 új navigációs rendszert vezetett be, amely gépelt navigációs osztályokat használt. Ez azt jelentette, hogy ahelyett, hogy közvetlenül a nézetekhez navigálnának, a fejlesztők erősen típős osztályok segítségével navigálhatnak a ViewModels között. Ez a megközelítés egyszerűsítette a platformok közötti navigációt a platform-specifikus részletek eloszlásával.

3. A ViewModel állapot megtakarítása és újratelepítése a sírokhoz: A V3 -ban bevezetett másik jelentős tulajdonság a ViewModel állapot mentésének és újratöltésének képessége volt. Ez különösen hasznos volt a "Tombstoning" forgatókönyvek kezelésére, ahol az operációs rendszer a memóriakorlátozások miatt fel lehet szüntetni, majd visszaállíthatja, amikor a felhasználó visszatér. A ViewModel állapot megmentésével az alkalmazások fenntarthatják jelenlegi állapotukat, még akkor is, ha felmondják és újraindítják.

4. A navigációs paraméterek átadva a `init ()` módszernek: Módszer: Az MVVMCross régebbi verzióiban a navigációs paramétereket közvetlenül a ViewModel konstruktorának adták át. A V3 -tól kezdve ezeket a paramétereket inkább a `init ()` módszerre továbbítottuk. Ez a változás lehetővé tette a konstruktor számára, hogy kizárólag a függőségi injekcióhoz használják, így a kód tisztább és karbantarthatóbbá válik. Az `init ()` módszer vált a navigációs paramétereket feldolgozva, lehetővé téve a rugalmasabb inicializálási logikát.

Összességében az MVVMCross V3 ezek a változásai strukturáltabb és fenntarthatóbb módszert jelentettek a ViewModels felépítésére és kezelésére, javítva a platformok közötti alkalmazások általános fejlesztési élményét.

Idézetek:
[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_intheeraction/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-andsetup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-we-naed-models-if-e-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-newinstances
[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