NULL referenčne izjeme v mvvmcrossu, kot v drugih okvirih, se običajno pojavijo pri poskusu dostopa ali manipuliranja z referenco NULL predmeta. Tu je nekaj skupnih vzrokov in scenarijev, kjer se lahko pojavijo te izjeme:
1. Neinicializirani predmeti **
Eden najpogostejših vzrokov za ničelne referenčne izjeme je, ko predmeti niso pravilno inicializirani, preden se uporabljajo. V MVVMcrossu se to lahko zgodi, če storitve ali pomočniki niso registrirani v vsebniku MOK ali če niso pravilno rešeni. Na primer, če je `mvx.iocprovider` NULL, lahko pri poskusu razrešitve odvisnosti privede do ničelnih referenčnih izjem [1].2. Nepravilna nastavitev IOC **
MVVMcross se za vbrizgavanje odvisnosti močno zanaša na svojo vsebnik MOK (inverzija kontrolne). Če je nastavitev MOK nepopolna ali napačna, lahko privede do ničelnih referenc. Na primer, če storitev ni registrirana, bo poskus, da bi jo rešil, povzročila ničelno referenčno izjemo.3. Zavezana vprašanja **
V MVVMcross se vezi uporablja za povezovanje modelov pogleda s pogledi. Če zavezujoči kontekst ni pravilno nastavljen ali če obstajajo težave z zavezujočimi izrazi, lahko privede do ničnih referenčnih izjem. To še posebej velja pri uporabi pogledov in vezi, specifičnih za platformo [3].4. Inicializacija modela navigacije in pogleda **
Pri navigaciji med pogledi, če modeli pogleda niso pravilno inicializirani ali če obstajajo težave z nastavitvijo navigacijske storitve, lahko to privede do ničnih referenčnih izjem. To se lahko zgodi, če navigacijska storitev ni pravilno registrirana ali če konstruktor modela View ne inicializira potrebnih odvisnosti [5].5. scenariji testiranja **
V scenarijih testiranja enot lahko komponente mvvmcross, kot je `mvxasyncCommand`, vržejo nul referenčne izjeme, če ponudnik MOK ne inicializira. To je zato, ker je treba ponudnika MOK ročno nastaviti v preskusnih okoljih, da pravilno razreši odvisnosti [1].Koraki za odpravljanje težav
Če želite odpraviti ničelne referenčne izjeme v mvvmcross, sledite tem korakom:- Preverite sled sklada: Določite natančno vrstico kode, ki povzroča izjemo.
- Preverite inicializacijo predmeta: Prepričajte se, da se vsi potrebni predmeti pravilno inicializirajo pred uporabo.
- Preglejte nastavitev IOC: Potrdite, da so vse potrebne storitve pravilno registrirane in rešene.
- Odpravljanje napak: uporabite prelomne točke za pregled spremenljivk in predmetov med izvajanjem, da ugotovite, katera je nična.
- Preglejte vezavne izraze: Prepričajte se, da so vezi pravilno nastavljene in da je vezavni kontekst pravilno inicializiran.
Z upoštevanjem teh korakov in razumevanjem skupnih vzrokov lahko učinkovito diagnosticirate in rešite nulske referenčne izjeme v aplikacijah MVVMcross.
Navedbe:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-mxvasyncCommand/53618570
[2] https://learn.microsoft.com/en-us/answers/questions/1323892/how-to-solve-system-nullreferenceException
[3] https://stackoverflow.com/questions/18954938/NullReference-Exception-during-bing-with-mvvmcross
[4] https://forum.uipath.com/t/datatable-has-a-value-bout-trowing-null-reference/462413
[5] https://github.com/mvvmcross/mvvmcross/isissue/4452
[6] https://pvs-studio.com/sl/blog/posts/csharp/1049/
[7] https://github.com/mvvmcross/mvvmcross/isissue/3571
[8] https://learn.microsoft.com/en-us/answers/Questions/944445/how-can-i-fix-the-error-system-nullreferenceExcept