Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip panaikinti atributai sąveikauja su kitomis MVVMCross API funkcijomis


Kaip panaikinti atributai sąveikauja su kitomis MVVMCross API funkcijomis


MVVMCross negaliojantys atributai, ypač iš tokių versijų kaip 7.1.0 ir 8.0.0, buvo integruoti siekiant sustiprinti nulinės būsenos analizę ir tvarkymą sistemoje. Ši integracija daro įtaką tam, kaip kūrėjai sąveikauja su įvairiomis „MVVMCross“ funkcijomis, įskaitant duomenų surišimą, navigaciją ir priklausomybės injekciją.

Poveikis duomenų surišimui

„MVVMCross“ duomenimis, duomenų įrišimas yra esminė savybė, jungianti „ViewModel“ savybes, kad būtų galima peržiūrėti elementus. Naudodamiesi negaliojančiais atributais, kūrėjai turi užtikrinti, kad „ViewModels“ ypatybės būtų teisingai komentuojamos kaip panaikinamos arba nemanamos. Ši anotacija daro įtaką tam, kaip duomenų įrišimas tvarko NULL vertes. Pavyzdžiui, jei nuosavybė pažymėta kaip nebenaudojama, nulinės vertės perdavimas paprastai sukels „argumentNullexception“, kuris gali sutrikdyti duomenų surišimą, nebent tinkamai tvarkoma [1] [10].

Norėdami valdyti NULL vertes surišant duomenis, kūrėjai gali naudoti verčių keitiklius, tokius kaip „MvxValueConverter“, kad pateiktų atsargines vertes, kai surišta savybė yra nulinė. Šis metodas leidžia labiau kontroliuoti, kaip NULL rodomi vartotojo sąsajoje, užtikrinant, kad programa išliks patogi vartotojui, net jei trūksta duomenų [6].

sąveika su navigacija

„MVVMCross“ navigacijos sistema priklauso nuo „ViewModels“ ir jų parametrų. Naudojant panaikinamus atributus, „ViewModel“ parametrai turi būti nuorodos tipai, kad būtų palaikomi negaliojamumo patikrinimai. Šis reikalavimas užtikrina, kad navigacija tarp „ViewModels“ teisingai tvarko nulines reikšmes, užkirsdamas kelią netikėtoms avarijoms ar elgesiui [1].

Naršydamas tarp rodinių, „MVVMCross“ naudoja pateikimo atributus, tokius kaip „MVXPOpOverPresentationAttribute“ „iOS“ ir „MvxFragmentPresentationAttribute“ „Android“. Šiems atributams gali įtakoti negalima, nes sistemos gebėjimas tvarkyti niekines vertes daro įtaką tam, kaip pateikiami ir pereinami vaizdai [1] [7].

priklausomybės injekcija ir negalima

„MVVMCross“ priklausomybės injekcijos (DI) sistema leidžia registruoti ir išspręsti paslaugas ir sąsajas. Naudodamiesi negaliojančiais atributais, kūrėjai, registruodami jas DI konteineryje, turi atsižvelgti į šių paslaugų panaikinimą. Šis aspektas yra labai svarbus, nes paslaugos gali būti išspręstos kaip niekinės, jei jos nėra tinkamai įregistruotos arba jei jos yra neprivalomos [8].

Vienetų testavimo scenarijuose užtikrinimas, kad „IOCProvider“ būtų teisingai inicializuotas, yra gyvybiškai svarbi, kad būtų išvengta NULL nuorodų išimčių, kai reikia išspręsti paslaugas. Šis inicijavimas yra būtinas, nes MVVMCROSS komandos, tokios kaip „MVXAsynccommand“, remiasi tuo, kad „iOCProvider“ yra nustatytas tinkamai veikti [11].

Išvada

Apibendrinant galima pasakyti, kad „MVVMCross“ negaliojantys atributai padidina sistemos sugebėjimą tvarkyti niekines vertes visose savo ypatybėse, įskaitant duomenų surišimą, navigaciją ir priklausomybės injekciją. Tinkamai komentuodami ypatybes ir paslaugas su panaikinamais atributais, kūrėjai gali užtikrinti tvirtą ir nuspėjamą elgesį savo įvairių platformų programose. Tačiau tam reikia atidžiai apsvarstyti, kaip NULL vertės tvarkomos visoje programoje, kad būtų išlaikyta sklandi vartotojo patirtis.

Citatos:
[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-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-ant-references-when-unit-testting-mxvasynccommand/53618570