Vo verzii MVVMCross verzie 6.2.2 sa uskutočnilo niekoľko zmien, ktoré by mohli ovplyvniť výskyt nulových referenčných výnimiek (NRE). Tu sú kľúčové úpravy:
1. Inicializácia poskytovateľa IOC: Jedna významná zmena sa týka inicializácie `MVX.iocprovider`. Pred touto verziou, ak poskytovateľ IOC nebol správne nastavený, mohlo by to viesť k nulovým referenčným výnimkám pri vytváraní príkazov ako `mvxasynccommand` v modeloch View. Konštruktor pre `MVXCommandBase` bol aktualizovaný tak, aby obsahoval mechanizmus valca, ktorý používa` mvxWeakCommandhelper`, ak je poskytovateľ IOC null alebo nedokáže vyriešiť inštanciu „imvxCommandhelper`. Cieľom tejto zmeny je zmierniť NRE zabezpečením, že príkazy môžu stále fungovať, aj keď poskytovateľ IOC nie je úplne inicializovaný [1].
2. Vylepšenia manipulácie s chybami: Riešenie potenciálnych nulových odkazov sa zlepšilo v rôznych častiach rámca. Napríklad boli pridané kontroly, aby sa zabezpečilo, že určité vlastnosti a metódy sa nepokúšajú dereferencie nulových objektov. Toto je obzvlášť dôležité pre komponenty, ktoré sa spoliehajú na externé služby alebo závislosti, ktoré nemusia byť vždy k dispozícii [1].
3. Úpravy testovania jednotiek: Užívatelia hlásili problémy s testmi jednotiek zlyhania z dôvodu nulových referenčných výnimiek pri používaní `mvxasynccommand`. Odporúčanie bolo poskytnuté na výslovnú inicializáciu poskytovateľa IOC v testovacích projektoch jednotiek. Táto úprava pomáha zabezpečiť, aby boli všetky závislosti správne vyriešené pred vykonaním testov, čím sa zníži pravdepodobnosť stretnutia s NRE počas testovacích scenárov [1].
4. Všeobecné opravy chýb: Poznámky k vydaniu pre MVVMCross 6.2.2 naznačujú, že sa riešilo niekoľko chýb súvisiacich s referenčnými výnimkami nulových referenčných výnimiek, hoci konkrétne podrobnosti o každej oprave neboli podrobne zdokumentované. Tieto opravy môžu obsahovať úpravy v rôznych komponentoch rámca, kde boli predtým hlásené NRE [10].
Celkovo sa tieto zmeny v MVVMCross 6.2.2 zameriavajú na zlepšenie stability a spoľahlivosti vykonávania príkazu a rozlíšenia závislosti, ktoré sú kritickými oblasťami, v ktorých môžu vzniknúť nulové referenčné výnimky. Zvýšením inicializačného procesu a spracovania chýb môžu vývojári očakávať zníženie takýchto výnimiek vo svojich aplikáciách vytvorených v tomto rámci.
Citácie:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-wen-unit-utesting-mxvasynccommand
[2] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[3] https://pvs-studio.com/en/blog/posts/csharp/1049/
[4] https://www.youtube.com/watch?v=uzsDzok4un8
[5] https://github.com/mvvmcross/mvvmcross/releases
[6] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[7] https://github.com/mvvmcross/mvvmcross/issues/3310
[8] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md
[9] https://www.reddit.com/r/dotnetmaui/comments/1bpfvky/cannot_pair_to_mac_null_reference_exception/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/