NULL atsauces izņēmumi MVVMCROSS, piemēram, citos ietvaros, parasti rodas, mēģinot piekļūt vai manipulēt ar nulles objekta atsauci. Šeit ir daži izplatīti cēloņi un scenāriji, kad šie izņēmumi varētu rasties:
1. Neinicializēti objekti **
Viens no visbiežāk sastopamajiem nulles atsauces izņēmumu cēloņiem ir tad, kad objekti netiek pareizi inicializēti pirms to lietošanas. MVVMCROSS tas var notikt, ja pakalpojumi vai palīgi nav reģistrēti SOK konteinerā vai ja tie nav pareizi atrisināti. Piemēram, ja `mvx.iocprovider` ir nulle, tas var izraisīt nulles atsauces izņēmumus, mēģinot atrisināt atkarības [1].2. Nepareiza IOK iestatīšana **
MVVMCROSS lielā mērā paļaujas uz tā SOK (kontroles inversija) konteineru atkarības injekcijai. Ja SOK iestatīšana ir nepilnīga vai nepareiza, tā var izraisīt nulles atsauces. Piemēram, ja pakalpojums nav reģistrēts, mēģinot atrisināt, tas radīs nulles atsauces izņēmumu.3. Iesiešanas jautājumi **
MVVMCROSS iesiešanu izmanto, lai savienotu skatu modeļus ar skatiem. Ja saistošais konteksts nav pareizi iestatīts vai ja ir problēmas ar saistošām izteiksmēm, tas var izraisīt nulles atsauces izņēmumus. Tas jo īpaši attiecas uz platformas specifiskiem skatiem un iesiešanas gadījumiem [3].4. Navigācijas un skata modeļa inicializācija **
Navigējot starp skatiem, ja skata modeļi netiek pareizi inicializēti vai ja rodas problēmas ar navigācijas pakalpojumu iestatīšanu, tas var izraisīt nulles atsauces izņēmumus. Tas varētu notikt, ja navigācijas pakalpojums nav pareizi reģistrēts vai ja skata modeļa konstruktors nespēj inicializēt nepieciešamās atkarības [5].5. Pārbaudes scenāriji **
Vienības testēšanas scenārijos MVVMCROSS komponenti, piemēram, `MVXASYNCCOMMAND`, var izmest nulles atsauces izņēmumus, ja SOK nodrošinātājs netiek inicializēts. Tas notiek tāpēc, ka SOK pakalpojumu sniedzējs ir jāiestata manuāli testa vidē, lai pareizi atrisinātu atkarības [1].Traucējummeklēšanas darbības
Lai novērstu nulles atsauces izņēmumus MVVMCROSS, rīkojieties šīs darbības:- Pārbaudiet kaudzes izsekošanu: identificējiet precīzu koda līniju, kas izraisa izņēmumu.
- Pārbaudiet objekta inicializāciju: pirms lietošanas pārliecinieties, vai visi nepieciešamie objekti tiek pareizi inicializēti.
- Pārbaudiet SOK iestatīšanu: apstipriniet, ka visi nepieciešamie pakalpojumi ir pareizi reģistrēti un atrisināti.
- atkļūdošana: izmantojiet pārtraukuma punktus, lai izpildlaikā pārbaudītu mainīgos un objektus, lai identificētu, kurš no tiem ir nulle.
- Pārskatiet iesiešanas izteicienus: pārliecinieties, ka iesiešanas ir pareizi iestatītas un iesiešanas konteksts ir pareizi inicializēts.
Veicot šīs darbības un izprotot kopējos cēloņus, jūs varat efektīvi diagnosticēt un atrisināt NULL atsauces izņēmumus MVVMCross lietojumprogrammās.
Atsauces:[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-binding-with-mvvmcross
.
[5] https://github.com/mvvmcross/mvvmcross/issues/4452
[6] https://pvs-studio.com/en/blog/posts/csharp/1049/
[7] https://github.com/mvvmcross/mvvmcross/issues/3571
[8] https://learn.microsoft.com/en-us/answers/questions/944445/how-can-i-fix-the-error-system-nullReferenceExcept Except Except Except