Na versão 6.2.2 MVVMcross, foram feitas várias alterações que poderiam afetar a ocorrência de exceções de referência nula (NRES). Aqui estão as principais modificações:
1. Inicialização do provedor do COI: Uma mudança significativa refere -se à inicialização do `mvx.iocprovider`. Antes desta versão, se o provedor do COI não fosse configurado corretamente, isso poderá levar a exceções de referência nula ao construir comandos como `mvxaSyncCommand` nos modelos de exibição. O construtor para `mvxCommandbase` foi atualizado para incluir um mecanismo de fallback que usa` mvxweakCommandhelper` se o provedor do COI for nulo ou não resolver uma instância de `imvxCommandhelper '. Essa alteração visa mitigar as NRES, garantindo que os comandos ainda possam funcionar mesmo que o provedor do COI não seja totalmente inicializado [1].
2. Melhorias no tratamento de erros: O manuseio de possíveis referências nulas foi aprimorado em várias partes da estrutura. Por exemplo, verificações foram adicionadas para garantir que certas propriedades e métodos não tentem desreferenciar objetos nulos. Isso é particularmente relevante para componentes que dependem de serviços ou dependências externas que nem sempre estão disponíveis [1].
3. Ajustes de teste de unidade: os usuários relataram problemas com testes de unidade falhando devido a exceções de referência nula ao usar o `mvxaSyncCommand`. A recomendação foi feita para inicializar explicitamente o provedor do COI em projetos de teste de unidade. Esse ajuste ajuda a garantir que todas as dependências sejam resolvidas adequadamente antes de executar testes, reduzindo assim a probabilidade de encontrar NRES durante os cenários de teste [1].
4. Correções gerais de bug: as notas de liberação para MVVMcross 6.2.2 indicam que vários bugs relacionados às exceções de referência nula foram abordados, embora detalhes específicos sobre cada correção não tenham sido extensivamente documentados. Essas correções podem incluir ajustes em vários componentes da estrutura onde os NRES foram relatados anteriormente [10].
No geral, essas mudanças no MVVMCROSS 6.2.2 se concentram em melhorar a estabilidade e a confiabilidade da execução de comando e resolução de dependência, que são áreas críticas em que as exceções de referência nula podem surgir. Ao aprimorar o processo de inicialização e o manuseio de erros, os desenvolvedores podem esperar uma redução em tais exceções em seus aplicativos criados com essa estrutura.
Citações:[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/postss/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/devell/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/