Uso de Microsoft.Extensions.dependencyInyection con MVVMCross puede presentar varios desafíos y problemas conocidos:
1. Incompatibilidad con el proceso de inicio MVVMCross: MVVMCross requiere la capacidad de resolver componentes a medio camino a través del proceso de configuración y luego continuar registrando más componentes. Sin embargo, Microsoft.Extensions.dePendencyInsyection (Ms.Di) requiere que todos los componentes se registren antes de llamar a `.Build ()` en la colección de servicios. Esta diferencia fundamental hace que los dos sistemas sean incompatibles sin soluciones adicionales, como traducir manualmente los servicios de un contenedor a otro [1].
2. Proceso de inicio de dos etapas: para aprovechar la Sra. Di con MVVMCross, los desarrolladores a menudo construyen una colección de servicios MS.DI y luego traducen sus servicios en la instancia MVVMCross `IMVXIOCProvider`. Este enfoque introduce un proceso de inicio de dos etapas, que puede ser engorroso y puede conducir a una complejidad adicional y problemas potenciales [1].
3. Limitaciones de inyección de dependencia: el contenedor IOC de MVVMCross trata el aspecto de singleton a nivel de interfaz, no del tipo instanciado. Esto significa que si una clase implementa múltiples interfaces, MVVMCross podría crear instancias separadas para cada interfaz a menos que se administre explícitamente [4]. Si bien esto no está directamente relacionado con la Sra. Di, resalta la necesidad de un manejo cuidadoso al integrar diferentes sistemas de inyección de dependencia.
4. Problemas de actualización y compatibilidad: actualizar las versiones MVVMCross a veces puede introducir problemas con la inyección de dependencia, especialmente cuando se utilizan modelos de vista base. Por ejemplo, los cambios en la lógica de selección del constructor entre versiones pueden afectar cómo se inyectan las dependencias [2].
Para superar estos desafíos, los desarrolladores a menudo eligen mejorar la funcionalidad de MVVMCross sin reemplazar su contenedor Core IOC. Esto permite el uso de marcos de inyección de dependencia adicionales como la Sra. Di junto con MVVMCross, proporcionando flexibilidad para elegir el proveedor del IOC [1] [5]. Sin embargo, esto requiere una configuración y gestión cuidadosa para evitar conflictos y garantizar una integración perfecta.
En resumen, si bien es posible usar microsoft.extensions.ependencyInyection con MVVMCross, requiere una consideración cuidadosa del proceso de inicio, las posibles incompatibilidades y la gestión cuidadosa de las dependencias para evitar problemas conocidos.
Citas:[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-inyection/extensions-dependencyinyection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-inyection-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-neping
[7] https://msicc.net/using-microsofts-extensions-dependencyinyection-package-in-xamarin-forms-mvvm-applications-tart-2/
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-inyection