Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Qué cambios se hicieron en MVVMCross 6.2.2 que podrían afectar las excepciones de referencia nulas


Qué cambios se hicieron en MVVMCross 6.2.2 que podrían afectar las excepciones de referencia nulas


En MVVMCross, la versión 6.2.2, se realizaron varios cambios que podrían afectar la aparición de excepciones de referencia nulas (NRES). Aquí están las modificaciones clave:

1. Inicialización del proveedor del COI: un cambio significativo se relaciona con la inicialización del `mvx.iocprovider`. Antes de esta versión, si el proveedor del COI no se configuró correctamente, podría conducir a excepciones de referencia nulas al construir comandos como `mvxasyncCommand` en los modelos de vista. El constructor para `MVXCommandBase` se actualizó para incluir un mecanismo respaldo que utiliza` MVXWeakCommandHelper` si el proveedor del COI es nulo o no resuelve una instancia de `IMVXCommandHelper`. Este cambio tiene como objetivo mitigar las NRE asegurando que los comandos aún puedan funcionar incluso si el proveedor del COI no está completamente inicializado [1].

2. Mejoras de manejo de errores: el manejo de posibles referencias nulas se ha mejorado en varias partes del marco. Por ejemplo, se han agregado verificaciones para garantizar que ciertas propiedades y métodos no intenten desreferir objetos nulos. Esto es particularmente relevante para los componentes que se basan en servicios o dependencias externas que pueden no estar siempre disponibles [1].

3. Ajustes de pruebas unitarias: los usuarios informaron problemas con las pruebas unitarias que fallaron debido a las excepciones de referencia nulas cuando se usan `mvxasyncCommand`. La recomendación se hizo para inicializar explícitamente el proveedor del COI en proyectos de prueba unitaria. Este ajuste ayuda a garantizar que todas las dependencias se resuelvan correctamente antes de ejecutar las pruebas, reduciendo así la probabilidad de encontrar NES durante los escenarios de prueba [1].

4. Correcciones de errores generales: las notas de versión para MVVMCross 6.2.2 indican que se abordaron varios errores relacionados con excepciones de referencia nulas, aunque los detalles específicos sobre cada corrección no se documentaron ampliamente. Estas correcciones pueden incluir ajustes en varios componentes del marco donde se informaron previamente de NRES [10].

En general, estos cambios en MVVMCross 6.2.2 se centran en mejorar la estabilidad y la confiabilidad de la ejecución de comandos y la resolución de dependencia, que son áreas críticas donde pueden surgir excepciones de referencia nulas. Al mejorar el proceso de inicialización y el manejo de errores, los desarrolladores pueden esperar una reducción en tales excepciones en sus aplicaciones construidas con este marco.

Citas:
[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_exception/
[10] https://www.mvvmcross.com/mvvmcross-6.2.0-release/