He estado refactorizando un sistema existente para usar la inyección de dependencia, y ese trabajo ha ido sin problemas.
Después de un tiempo, noté que una gran cantidad de bibliotecas internas se volvieron dependientes del marco DI que utilicé. Como resultado, todo el proyecto ahora depende de este marco de terceros.
Vi una ironía en desacoplar todas las dependencias al hacerlas dependientes de una biblioteca compartida.
Mi primera reacción fue crear una biblioteca contenedor alrededor del marco de dependencia. Por lo tanto, podría reemplazar este marco si es necesario. Después de estimar el trabajo involucrado, me di cuenta de que la API resultante sería similar al marco existente y, por lo tanto, dificultaría su reemplazo. Entonces abandoné la idea.
Mi preocupación es que el marco DI que estoy usando se vuelve obsoleto o necesita ser reemplazado.
¿Existe un patrón de desarrollo cuando se trabaja con DI que reduce el acoplamiento entre un proyecto y el marco de DI?
DIFramework.Get<IService>()
no es realmente una inyección de dependencia; Es un patrón relacionado llamado Service Locator. A muchas personas no les gusta el Localizador de servicios porque lo une al marco y porque se abusa demasiado fácilmente (como Singleton). Martin Fowler tiene un excelente artículo sobre estos patrones: martinfowler.com/articles/injection.html