Nella versione 6.2.2 MVVMCROSS, sono state apportate diverse modifiche che potrebbero influire sul verificarsi delle eccezioni di riferimento nulle (NRE). Ecco le modifiche chiave:
1. Inizializzazione del provider IOC: una modifica significativa riguarda l'inizializzazione di `mvx.iocProvider`. Prima di questa versione, se il provider IOC non fosse impostato correttamente, potrebbe portare a null di riferimento quando si costruiscono comandi come i modelli `mvxasynccommand`. Il costruttore per `mvxcommandbase` è stato aggiornato per includere un meccanismo di fallback che utilizza` mvxweakCommandHelper` se il provider IOC è nullo o non riesce a risolvere un'istanza di `imvxCommandHelper`. Questo cambiamento mira a mitigare gli NRE assicurando che i comandi possano ancora funzionare anche se il provider IOC non è completamente inizializzato [1].
2. Miglioramenti di gestione degli errori: la gestione dei potenziali riferimenti nulli è stata migliorata in varie parti del framework. Ad esempio, sono stati aggiunti controlli per garantire che determinate proprietà e metodi non tentino di dereference oggetti nulli. Ciò è particolarmente rilevante per i componenti che si basano su servizi esterni o dipendenze che potrebbero non essere sempre disponibili [1].
3. Regolazioni di test unitarie: gli utenti hanno segnalato problemi con test unitari che non riescono a causa delle eccezioni di riferimento nulle quando si utilizzano `mvxasynccommand`. La raccomandazione è stata fatta di inizializzare esplicitamente il provider IOC nei progetti di test unitari. Questa regolazione aiuta a garantire che tutte le dipendenze siano correttamente risolte prima di eseguire i test, riducendo così la probabilità di incontrare NRES durante gli scenari di test [1].
4. Correzioni di bug generali: le note di rilascio per MVVMCRoss 6.2.2 indicano che sono state affrontate un numero di bug relativi alle eccezioni di riferimento null, sebbene i dettagli specifici su ciascuna correzione non siano stati ampiamente documentati. Queste correzioni possono includere regolazioni tra vari componenti del framework in cui NRES erano stati precedentemente riportati [10].
Nel complesso, questi cambiamenti in MVVMCRoss 6.2.2 si concentrano sul miglioramento della stabilità e dell'affidabilità dell'esecuzione dei comandi e della risoluzione della dipendenza, che sono aree critiche in cui possono sorgere eccezioni di riferimento nulli. Migliorando il processo di inizializzazione e la gestione degli errori, gli sviluppatori possono aspettarsi una riduzione di tali eccezioni nelle loro applicazioni costruite con questo framework.
Citazioni:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-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/release
[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/