J'ai refactorisé un système existant pour utiliser l'injection de dépendances, et ce travail s'est bien déroulé.
Après un certain temps, j'ai remarqué qu'un grand nombre de bibliothèques internes sont devenues dépendantes du framework DI que j'ai utilisé. En conséquence, l'ensemble du projet dépend désormais de ce cadre tiers.
J'ai vu une ironie dans le découplage de toutes les dépendances en les rendant dépendantes d'une bibliothèque partagée.
Ma première réaction a été de créer une bibliothèque d'encapsuleurs autour du framework de dépendance. Par conséquent, je pourrais remplacer ce cadre si nécessaire. Après avoir estimé le travail impliqué, j'ai réalisé que l'API résultante serait similaire au cadre existant, et rendrait donc son remplacement plus difficile. J'ai donc abandonné l'idée.
Ma préoccupation est que le cadre DI que j'utilise devient obsolète ou doit être remplacé.
Existe-t-il un modèle de développement lorsque vous travaillez avec DI qui réduit le couplage entre un projet et le cadre DI?
DIFramework.Get<IService>()
n'est pas réellement une injection de dépendance; c'est un modèle connexe appelé Service Locator. Beaucoup de gens n'aiment pas Service Locator parce qu'il vous couple au framework et parce qu'il est trop facilement abusé (comme Singleton). Martin Fowler a un excellent article sur ces modèles: martinfowler.com/articles/injection.html