Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hogyan kölcsönhatásba lépnek a nullázható attribútumok más mvvmcross API funkciókkal


Hogyan kölcsönhatásba lépnek a nullázható attribútumok más mvvmcross API funkciókkal


Az MVVMCross-ban a nullázható attribútumokat, különösen a 7.1.0 és a 8.0.0 verziókból, integráltak a null-state elemzés és a kezelés javítása érdekében a kereten belül. Ez az integráció befolyásolja, hogy a fejlesztők hogyan kölcsönhatásba lépnek a különféle MVVMCross funkciókkal, ideértve az adatkötést, a navigációt és a függőségi injekciót.

Hatás az adatkötésre

Az MVVMCross -ban az adatkötés egy kritikus tulajdonság, amely összeköti a ViewModel tulajdonságait az elemek megtekintéséhez. A semmilyen nulla attribútummal a fejlesztőknek gondoskodniuk kell arról, hogy a ViewModels tulajdonságai helyesen jelöljék meg nulla vagy nem nullable. Ez a kommentár befolyásolja, hogy az adatok kötése hogyan kezeli a null értékeket. Például, ha egy tulajdonságot nem nulla lehet jelölni, akkor a nulla érték átadása általában „argumentNuleLLEXception” -ot eredményez, amely megzavarhatja az adatkötést, hacsak nem megfelelően kezelik [1] [10].

A nulla értékek kezeléséhez az adatkötésben a fejlesztők olyan értékváltókat használhatnak, mint például a „mvxValueConverter”, hogy tartalékértékeket biztosítsanak, ha a kötött tulajdonság nulla. Ez a megközelítés lehetővé teszi a NULLS megjelenítésének nagyobb ellenőrzését az UI-ban, biztosítva, hogy az alkalmazás továbbra is felhasználóbarát maradjon, még akkor is, ha az adatok hiányoznak [6].

interakció a navigációval

Az MVVMCross navigációs rendszere a ViewModels -re és azok paramétereire támaszkodik. A nulla attribútumokkal a ViewModel paramétereknek referencia -típusoknak kell lenniük a nullabilitási ellenőrzések támogatásához. Ez a követelmény biztosítja, hogy a ViewModels közötti navigáció a null értékeket helyesen kezelje, megakadályozva a váratlan ütközéseket vagy viselkedést [1].

A nézetek közötti navigáláskor az MVVMCross olyan prezentációs attribútumokat használ, mint például az „MVXPOPOVERPresentationTribute” az iOS és az „MvxFragmentPresentationAttribute” számára az Android számára. Ezeket az attribútumokat befolyásolhatja a nullailitás, mivel a keretképesség a nulla értékek kezelésének képessége befolyásolja a nézetek bemutatásának és átmenetének módját [1] [7].

Függőség injekció és nullailitás

Az MVVMCross függőségi injekciós (DI) rendszere lehetővé teszi a szolgáltatások és interfészek regisztrációját és felbontását. A semmilyen nulla attribútumokkal a fejlesztőknek figyelembe kell venniük ezeknek a szolgáltatásoknak a nullailitását, amikor regisztrálják őket a DI konténerben. Ez a megfontolás elengedhetetlen, mivel a szolgáltatások nullként oldhatók meg, ha nem megfelelően regisztráltak, vagy ha opcionálisak [8].

Az egységteszt -tesztelési forgatókönyvekben annak biztosítása, hogy az IOCProvider helyesen inicializálódjon, elengedhetetlen a szolgáltatások megoldásakor a null referencia -kivételek elkerülése érdekében. Erre az inicializálásra van szükség, mivel az MVVMCross parancsok, mint például a „MvxasyncCommand”, az IOCProviderre támaszkodnak, hogy helyesen működjenek [11].

Következtetés

Összefoglalva: az MVVMCross nullázható attribútumok javítják a keret azon képességét, hogy a null értékeket a tulajdonságok között kezeljék, ideértve az adatkötést, a navigációt és a függőségi injekciót. A tulajdonságok és szolgáltatások megfelelő kommentálásával a nulla attribútumokkal a fejlesztők biztosíthatják a robusztus és kiszámítható viselkedést a platformok közötti alkalmazásokban. Ehhez azonban alaposan meg kell vizsgálni a nulla értékek kezelését az alkalmazás során, hogy fenntartsák a zökkenőmentes felhasználói élményt.

Idézetek:
[1] https://www.mvvmcross.com/mvvmcross-7.1.0-rease/
[2] https://www.mvvmcross.com/documentation/getting-started/getting-started
[3] https://www.reddit.com/r/dotnet/comments/1dc0lq9/how_do_you_handle_api_models_with_nullabilitási/
[4] https://www.mvvmcross.com/mvvmcross-8.0.0-rease/
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://stackoverflow.com/questions/36802966/show-a-value-in-case-of-null-in-mvvmcross
[7] https://www.mvvmcross.com/documentation/platform/android/android-view-presenter
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/nullable-analysis
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-stesting-mxvasyncmommand/53618570