Az MVVMCross null referencia -kivételei, mint a többi keretben, általában akkor fordulnak elő, amikor megkísérelnek hozzáférni vagy manipulálni egy null objektum -referenciát. Íme néhány általános ok és forgatókönyv, ahol ezek a kivételek merülhetnek fel:
1. Inhializált tárgyak **
A null referencia -kivételek egyik leggyakoribb oka az, ha az objektumokat nem megfelelően inicializálják, mielőtt felhasználják őket. Az MVVMCross esetében ez akkor fordulhat elő, ha a szolgáltatásokat vagy a segítőit nem regisztrálják a NOB -tartályban, vagy ha azokat nem oldják meg megfelelően. Például, ha az `mvx.iocprovider 'nulla, akkor null referencia -kivételekhez vezethet, amikor megpróbálják megoldani a függőségeket [1].2. Helytelen IOC beállítás **
Az MVVMCross nagymértékben támaszkodik a NOB (a kontroll inverziója) tartályán a függőség injekciójának. Ha a NOB beállítása hiányos vagy helytelen, akkor null hivatkozásokhoz vezethet. Például, ha egy szolgáltatás nem regisztrált, akkor a megoldás megkísérelése null referencia -kivételt eredményez.3. Kötési kérdések **
Az MVVMCross -ban a kötéseket használják a nézetmodellek és a nézetekhez való csatlakoztatáshoz. Ha a kötési kontextust nem állítják be megfelelően, vagy ha vannak a kötési kifejezésekkel kapcsolatos problémák, akkor ez null referencia -kivételekhez vezethet. Ez különösen igaz, ha platformspecifikus nézeteket és kötéseket használnak [3].4. Navigáció és megtekintés modell inicializálás **
Ha a nézetek között navigál, ha a nézetmodellek nem kerülnek megfelelően inicializálva, vagy ha vannak problémák a navigációs szolgáltatás beállításával, ez null referencia -kivételekhez vezethet. Ez akkor fordulhat elő, ha a navigációs szolgáltatást nem regisztrálták helyesen, vagy ha a View Model Constroctor nem inicializálja a szükséges függőségeket [5].5. Tesztelési forgatókönyvek **
Az egység tesztelési forgatókönyveiben az MVVMcross komponensek, mint például a „MvxasyncCommand”, null referencia -kivételeket dobhatnak, ha a NOC szolgáltatót nem inicializálják. Ennek oka az, hogy a NOB szolgáltatót manuálisan kell beállítani a tesztkörnyezetben a függőségek helyének megfelelő megoldása érdekében [1].Hibaelhárítási lépések
A null referencia -kivételek hibaelhárításához az mvvmcross -ban kövesse ezeket a lépéseket:- Ellenőrizze a verem nyomkövetését: Azonosítsa a kivételt okozó kód pontos sorát.
- Ellenőrizze az objektum inicializálását: Győződjön meg arról, hogy minden szükséges objektum megfelelően inicializálódik használat előtt.
- Ellenőrizze a NOB beállítását: Ellenőrizze, hogy az összes szükséges szolgáltatás helyesen van -e regisztrálva és megoldva.
- Hibakeresés: Használjon töréspontokat a változók és objektumok futásidejű ellenőrzéséhez, hogy meghatározza, melyik a nulla.
- Tekintse át a kötési kifejezéseket: Gondoskodjon arról, hogy a kötések helyesen vannak -e beállítva, és hogy a kötési kontextus megfelelően inicializálódjon.
Ezeknek a lépéseknek a követésével és a közös okok megértésével hatékonyan diagnosztizálhatja és megoldhatja a null referencia -kivételeket az MVVMCross alkalmazásokban.
Idézetek:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-stesting-mxvaynccommand/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
[4] https://forum.uipath.com/t/datatable-has-a-value-but-thowning-null-reference/462413
[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-treor-system-nullreferenceexcept