Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Y a-t-il des problèmes connus avec l'utilisation de Microsoft.Extensions.DendencyInjection avec MVVMCROSS


Y a-t-il des problèmes connus avec l'utilisation de Microsoft.Extensions.DendencyInjection avec MVVMCROSS


L'utilisation de Microsoft.Extensions.DendenCencyInjection avec MVVMCross peut présenter plusieurs défis et problèmes connus:

1. Incompatibilité avec le processus de démarrage de MVVMCross: MVVMCROSS nécessite la capacité de résoudre les composants à mi-parcours via le processus de configuration, puis de continuer à enregistrer plus de composants. Cependant, Microsoft.Extensions.DependencyInjection (MS.DI) exige que tous les composants soient enregistrés avant d'appeler `.build () 'sur la collection de services. Cette différence fondamentale rend les deux systèmes incompatibles sans solution supplémentaire, tels que la traduction manuelle des services d'un conteneur à un autre [1].

2. Processus de démarrage en deux étapes: Pour tirer parti de MS.DI avec MVVMCross, les développeurs créent souvent une collection de services MS.DI, puis traduisent ses services dans l'instance MVVMCross `IMVXIOCProvider. Cette approche introduit un processus de démarrage en deux étapes, qui peut être lourd et peut entraîner une complexité supplémentaire et des problèmes potentiels [1].

3. Limitations d'injection de dépendance: le conteneur IOC de MVVMCross traite l'aspect singleton au niveau de l'interface, pas le type instancié. Cela signifie que si une classe implémente plusieurs interfaces, MVVMCROSS peut créer des instances distinctes pour chaque interface, sauf si explicitement gérée [4]. Bien que cela ne soit pas directement lié à MS.DI, il met en évidence la nécessité d'une gestion minutieuse lors de l'intégration de différents systèmes d'injection de dépendance.

4. Problèmes de mise à niveau et de compatibilité: la mise à niveau des versions MVVMCross peut parfois introduire des problèmes avec l'injection de dépendance, en particulier lors de l'utilisation de modèles de vue de base. Par exemple, les changements dans la logique de sélection des constructeurs entre les versions pourraient affecter la façon dont les dépendances sont injectées [2].

Pour surmonter ces défis, les développeurs choisissent souvent d'améliorer les fonctionnalités de MVVMCross sans remplacer son conteneur CIO central. Cela permet d'utiliser des cadres d'injection de dépendance supplémentaires comme MS.DI aux côtés de MVVMCross, offrant une flexibilité dans le choix du fournisseur IOC [1] [5]. Cependant, cela nécessite une configuration et une gestion minutieuses pour éviter les conflits et assurer une intégration transparente.

En résumé, bien que l'utilisation de Microsoft.Extensions.DenpendencyInjection avec MVVMCROSS soit possible, elle nécessite une attention particulière du processus de démarrage, des incompatibilités potentielles et une gestion minutieuse des dépendances pour éviter les problèmes connus.

Citations:
[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-injection/extensions-dependencyInjection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[7] https://msicc.net/using-microsofts-extensions-dependencyInjejection-package-in-xamarin-formes-mvvm-applications-parts-2//
[8] https://www.mvvmcross.com/documentation/fundamentals/dependency-injection