Soy nuevo en IoC y estoy jugando con Unity. Supongamos que tiene una solución con 'n' proyectos y desea usar Unity para registrar y resolver las dependencias. Digamos que su raíz de composición está en el proyecto a. Supongamos que tiene los siguientes proyectos en la solución.¿Cómo se manejan las dependencias 'profundas' con IoC y DI?
un b c d
digamos que un depende de algo en b, b depende de algo en c y c depende de algo en d
He visto cómo yo u puede utilizar la inyección de constructor para resolver el a => b dependencia pero estoy atascado en la forma dependencia de b en c puede resolverse sin acceso al contenedor que se ha configurado y creado en un proyecto .
¿Cuál es el enfoque para resolver las dependencias anidadas? ¿Existe un debate/blog/ejemplo que aborde la resolución de dependencias profundas?
posible duplicado de [Pruebas unitarias e inyección de dependencia con dependencias profundamente anidadas] (http://stackoverflow.com/questions/4147018/unit-testing-and-dependency-injection-with-deeply-nested-dependencies) –
Basado en el posible duplicado vinculado, si estoy en b y necesito una instancia de c, ¿le pediría al contenedor que resolviera la instancia? es decir: C c = container.resolve(); y si estoy en C ¿sigo el mismo patrón ... esto requeriría que todos los proyectos tengan acceso al contenedor ... ¿Es este un enfoque deseable? –
jparram
No, solo su proyecto de nivel más alto (una aplicación o un sitio web) debe hacer referencia a un contenedor. Las capas inferiores no deberían ni siquiera necesitar conocer las dependencias concretas. En otras palabras, dentro de C nunca deberías necesitar resolver una instancia concreta de una clase de D. ¿Tiene sentido eso? –