MVVMCrossバージョン6.2.2では、NULL参照例外(NRE)の発生に影響を与える可能性のあるいくつかの変更が行われました。重要な変更は次のとおりです。
1。IOCプロバイダーの初期化:1つの重要な変更は、 `mvx.iocprovider`の初期化に関連しています。このバージョンの前に、IOCプロバイダーが正しくセットアップされていない場合、ビューモデルで「MVXasynccommand」のようなコマンドを構築する際に、NULL参照例外につながる可能性があります。 「MVXCommandBase」のコンストラクターは、IOCプロバイダーがnullまたは「imvxcommandhelper」のインスタンスを解決できない場合、「mvxweakcommandhelper」を使用するフォールバックメカニズムを含むように更新されました。この変更は、IOCプロバイダーが完全に初期化されていなくても、コマンドが依然として機能することを保証することにより、NREを軽減することを目的としています[1]。
2。エラー処理の改善:フレームワークのさまざまな部分で潜在的なヌル参照の処理が改善されました。たとえば、特定のプロパティとメソッドがオブジェクトを抑制しようとしないことを確認するためにチェックが追加されています。これは、常に利用できるとは限らない外部サービスまたは依存関係に依存するコンポーネントに特に関連しています[1]。
3.単体テストの調整:ユーザーは、「MVXASYNCCOMMAND」を使用する場合、NULL参照の例外が原因で単体テストの問題を報告しました。この推奨事項は、ユニットテストプロジェクトでIOCプロバイダーを明示的に初期化するために行われました。この調整は、テストを実行する前にすべての依存関係が適切に解決されることを保証し、それにより、テストシナリオ中にNRESに遭遇する可能性を減らします[1]。
4.一般的なバグ修正:MVVMCross 6.2.2のリリースノートは、ヌル参照の例外に関連する多くのバグが対処されたことを示していますが、各修正の特定の詳細は広範囲に文書化されていません。これらの修正には、NREが以前に報告されたフレームワークのさまざまなコンポーネントにわたる調整が含まれる場合があります[10]。
全体として、MVVMCross 6.2.2のこれらの変更は、コマンドの実行と依存関係の解像度の安定性と信頼性の向上に焦点を当てています。初期化プロセスとエラー処理を強化することにより、開発者はこのフレームワークで構築されたアプリケーションでそのような例外の減少を期待できます。
引用:[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/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_excection/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/