В версии MVVMcross 6.2.2 было внесено несколько изменений, которые могли повлиять на возникновение нулевых справочных исключений (NRE). Вот ключевые модификации:
1. Инициализация поставщика МОК: одно значительное изменение связано с инициализацией `mvx.iocprovider`. Перед этой версией, если поставщик МОК не был настроен правильно, это может привести к нулевым ссылкам, при создании таких команд, как `mvxasynccommand` в виде моделей. Конструктор для `mvxcommandbase` был обновлен, чтобы включить запасной механизм, в котором используется` mvxweakcommandhelper`, если поставщик МОК является нулевым или не разрешает экземпляр «imvxcommandhelper`. Это изменение направлено на смягчение NRE, обеспечивая, чтобы команды все еще могли функционировать, даже если поставщик IOC не полностью инициализирован [1].
2. Улучшения обработки ошибок: обработка потенциальных нулевых ссылок была улучшена в различных частях структуры. Например, были добавлены проверки, чтобы убедиться, что определенные свойства и методы не пытаются обозначить нулевые объекты. Это особенно актуально для компонентов, которые полагаются на внешние услуги или зависимости, которые не всегда могут быть доступны [1].
3. Регулирование модульного тестирования: пользователи сообщили о проблемах с сбоями с модульными тестами из -за нулевых эталонных исключений при использовании `mvxasynccommand`. Рекомендация была разработана явно инициализировать поставщика МОК в проектах модульных испытаний. Эта корректировка помогает гарантировать, что все зависимости будут должным образом разрешены перед выполнением тестов, тем самым снижая вероятность встречи NRE во время сценариев тестирования [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://visualstumagazine.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/