W MVVMCROSS w wersji 6.2.2 wprowadzono kilka zmian, które mogłyby wpłynąć na występowanie zerowych wyjątków odniesienia (NRE). Oto kluczowe modyfikacje:
1. Inicjalizacja dostawcy MKOC: Jedna znacząca zmiana dotyczy inicjalizacji „mvx.iocprovider”. Przed tą wersją, jeśli dostawca MKOl nie został skonfigurowany poprawnie, może to prowadzić do zerowych wyjątków odniesienia podczas konstruowania poleceń takich jak „MvxAsynCommand” w modelach. Konstruktor „MvxCommandBase” został zaktualizowany o mechanizm awarii, który wykorzystuje `MvxweakCommandhelper` Jeśli dostawca MKOl jest zerowy lub nie rozwiązuje instancji„ imvxCommandhelper ”. Ta zmiana ma na celu złagodzenie NRES poprzez zapewnienie, że polecenia mogą nadal funkcjonować, nawet jeśli dostawca MKOl nie jest w pełni zainicjowany [1].
2. Ulepszenia obsługi błędów: Obsługa potencjalnych odniesień zerowych została ulepszona w różnych częściach ramy. Na przykład dodano kontrole, aby upewnić się, że niektóre właściwości i metody nie próbują odważyć obiektów zerowych. Jest to szczególnie istotne dla komponentów, które opierają się na usługach zewnętrznych lub zależnościach, które nie zawsze mogą być dostępne [1].
3. Korekty testowania jednostek: Użytkownicy zgłosili problemy z niepowodzeniem testów jednostkowych z powodu zerowych wyjątków odniesienia przy użyciu „MvxAsynCommand”. Zalecenie zostało wydane w celu wyraźnego zainicjowania dostawcy MKOl w projektach testowych jednostkowych. Ta regulacja pomaga zapewnić prawidłowe rozwiązanie wszystkich zależności przed wykonaniem testów, zmniejszając w ten sposób prawdopodobieństwo spotkania NRE podczas scenariuszy testowania [1].
4. Ogólne poprawki błędów: Uwagi do wydania dla MVVMCROSS 6.2.2 wskazują, że omówiono liczbę błędów związanych z wyjątkami odniesienia zerowego, chociaż szczegółowe szczegóły każdej poprawki nie zostały szeroko udokumentowane. Te poprawki mogą obejmować korekty różnych elementów ramy, w których wcześniej zgłaszano NRE [10].
Ogólnie rzecz biorąc, te zmiany MVVMCROSS 6.2.2 Koncentrują się na poprawie stabilności i niezawodności wykonywania poleceń i rozdzielczości zależności, które są kluczowymi obszarami, w których mogą powstać wyjątki odniesienia zerowe. Poprawiając proces inicjalizacji i obsługę błędów, programiści mogą oczekiwać zmniejszenia takich wyjątków w swoich aplikacjach zbudowanych z tymi ramami.
Cytaty:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-reference-hen-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=UZSZOK4UN8
[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/canot_pair_to_mac_null_reference_exception/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/