Los dos mecanismos comunes para la creación de enlaces de inyección de dependencia, tales como a través de un recipiente IOC, es de una configuración de XML o un bloque de código imperativo. En estos casos, el par de valores clave es explícito (es decir, clave = tipo solicitado, valor = tipo devuelto).(automática) Inyección de dependencias Encuadernación Mecanismos
Todavía hay un tercer enfoque "heurístico" donde un contenedor de aplicación/IOC recibe solo claves [IMyClass] y el contenedor refleja un conjunto de dependencias de conjunto de aplicaciones para encontrar todas las clases concretas con nombre coincidente [MyClass] . Dicho de otra manera, los valores de "tipo de devolución" se descubren en lugar de declararse.
Lo que me gustaría saber es doble:
- Qué contenedores COI (u otras herramientas de unión a finales de los años) permiten el enfoque heurístico? ¿Este enfoque tiene un nombre más común?
- ¿Existen otras técnicas de encuadernación, además de las tres que he enumerado, que se utilizan en la práctica?
Unity y Ninject también son compatibles con la configuración basada en convenciones (al igual que la mayoría de los demás contenedores de IoC). –
Unity 2.0 no es compatible con la configuración basada en convenciones. Cuando escribí mi libro, me puse en contacto con Chris Tavares (el arquitecto de Unity), quien confirmó que no es compatible con el registro automático. –
Tiene razón acerca de que Unity 2.0 no tiene soporte inmediato, pero puede usar un enfoque basado en convenciones utilizando, p. Ej. 'IUnityContainer.RegisterType', por lo que puede (fácilmente) hacerse. De hecho, esto es lo que hacemos en uno de nuestros proyectos actuales. –