Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Qué cambios se introdujeron en MVVMCross V3 con respecto a la construcción de ViewModel


Qué cambios se introdujeron en MVVMCross V3 con respecto a la construcción de ViewModel


En MVVMCross V3, se introdujeron varios cambios significativos con respecto a la construcción de modificaciones de ViewModel, que tenía como objetivo mejorar la probabilidad y la usabilidad para los desarrolladores. Aquí están los cambios clave:

1. Inyección de dependencia basada en constructor: uno de los principales cambios fue la introducción de la inyección de dependencia basada en constructor. Esto permitió a los desarrolladores inyectar dependencias directamente en el constructor de ViewModel, facilitando la gestión de las dependencias y mejorar la capacidad de prueba. Antes de esto, las dependencias a menudo se gestionaron a través de otros medios, lo que podría ser menos sencillo.

2. Navegación utilizando clases de navegación tipificadas: MVVMCross V3 introdujo un nuevo sistema de navegación que utilizaba clases de navegación tipificadas. Esto significaba que en lugar de navegar directamente a las vistas, los desarrolladores podrían navegar entre los modelos de vista utilizando clases fuertemente tipadas. Este enfoque simplificó la navegación multiplataforma al abstraer detalles específicos de la plataforma.

3. Guardar y recargar el estado de ViewModel para la tumba: otra característica significativa introducida en V3 fue la capacidad de guardar y recargar el estado ViewModel. Esto fue particularmente útil para manejar escenarios de "tumbas", donde el sistema operativo podría terminar una aplicación debido a limitaciones de memoria y luego restaurarse cuando el usuario regresa a él. Al guardar el estado ViewModel, las aplicaciones podrían mantener su estado actual incluso después de ser despedido y reiniciado.

4. Parámetros de navegación pasados ​​a `init ()` Método: en versiones anteriores de MVVMCross, los parámetros de navegación se pasaron directamente al constructor de ViewModel. Sin embargo, comenzando con V3, estos parámetros se pasaron al método `init ()`. Este cambio permitió que el constructor se usara únicamente para la inyección de dependencia, haciendo que el código sea más limpio y más mantenible. El método `init ()` se convirtió en el lugar donde se procesaron los parámetros de navegación, lo que permite una lógica de inicialización más flexible.

En general, estos cambios en MVVMCross V3 proporcionaron una forma más estructurada y mantenible de construir y administrar modelos de vista, mejorando la experiencia general de desarrollo para aplicaciones multiplataforma.

Citas:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-we-need-models-if-we-ear-sing-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-newinstances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-neping
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md