Atributi, ki so v MVVMcrossu, so bili nihani, zlasti iz različic, kot sta 7.1.0 in 8.0.0, so bili integrirani za izboljšanje analize NULL-State in ravnanja v okviru. Ta integracija vpliva na to, kako razvijalci delujejo z različnimi funkcijami MVVMcross, vključno z vezavo podatkov, navigacijo in vbrizgavanjem odvisnosti.
Vpliv na vezavo podatkov
V MVVMcross je vezava podatkov ključna značilnost, ki povezuje lastnosti ViewModel za ogled elementov. Z nihanimi atributi morajo razvijalci zagotoviti, da so lastnosti v ViewModelih pravilno označene kot nihajoče ali nepremagljive. Ta pripomba vpliva na to, kako vezava podatkov obravnava ničelne vrednosti. Na primer, če je lastnost označena kot nepremagljiva, bo prehod ničelne vrednosti običajno povzročil `argumentNullexception", ki lahko moti vezavo podatkov, razen če je pravilno obravnavano [1] [10].
Za upravljanje ničelnih vrednosti v vezavi podatkov lahko razvijalci uporabijo vrednostne pretvornike, kot je `mvxvalueConverter`, da zagotovijo odmične vrednosti, kadar je vezana lastnost nična. Ta pristop omogoča več nadzora nad prikazom ničnih v uporabniškem vmesniku, kar zagotavlja, da aplikacija ostane uporabniku prijazna, tudi če manjkajo podatki [6].
Interakcija z navigacijo
Navigacijski sistem MVVMcrossa se opira na ViewModele in njihove parametre. Z nihalnimi atributi morajo biti parametri ViewModel referenčne vrste, ki podpirajo preverjanje ničnosti. Ta zahteva zagotavlja, da navigacija med ViewModeli pravilno obravnava nične vrednosti, kar preprečuje nepričakovane zrušitve ali vedenje [1].
Pri krmarjenju med pogledi MVVMcross uporablja atribute predstavitve, kot so `mvxpopoverSentationTribute` za iOS in` mvxfragmentpresentationTtribute` za Android. Na te atribute lahko vpliva nihalnost, saj sposobnost okvira za ravnanje z ničelnimi vrednostmi vpliva na to, kako se pogledi predstavijo in prehajajo [1] [7].
Vbrizgavanje odvisnosti in nihanje
MVVMCROSS -ov odvisnost od vbrizgavanja (DI) omogoča registracijo in reševanje storitev in vmesnikov. Z nihalnimi atributi morajo razvijalci upoštevati ničnost teh storitev, ko jih registrirajo v vsebnik DI. Ta upoštevanje je ključnega pomena, ker se lahko storitve rešijo kot nične, če niso pravilno registrirane ali če niso obvezne [8].
V scenarijih testiranja enot je zagotavljanje, da je iOCProvider pravilno inicializiran, ključnega pomena, da se pri reševanju storitev izognete ničnim referenčnim izjemam. Ta inicializacija je potrebna, ker se ukazi mvvmcross, kot je "mvxasyncCommand", zanašajo na pravilno nastavljeno iocProvider, ki bo pravilno deloval [11].
Zaključek
Če povzamemo, Nullable Atributi v MVVMcrossu povečujejo sposobnost okvira za ravnanje z ničelnimi vrednostmi v njegovih značilnostih, vključno z vezavo podatkov, navigacijo in vbrizgavanjem odvisnosti. S pravilnim zapisovanjem lastnosti in storitev z nihanimi atributi lahko razvijalci v svojih aplikacijah med več platformami zagotovijo robustno in predvidljivo vedenje. Vendar to zahteva skrbno upoštevanje, kako se v celotni aplikaciji ravnajo z ničnimi vrednostimi, da se ohrani brezhibno uporabniško izkušnjo.
Navedbe:[1] https://www.mvvmcross.com/mvvmcross-7.1.0-release/
[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_nullability/
[4] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[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----
[11] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-mxvasyncCommand/53618570