Tome el siguiente programa inútil:La resolución de clases sin registrarse utilizando el castillo de Windsor
class Program
{
static void Main(string[] args)
{
IUnityContainer unityContainer = new UnityContainer();
IWindsorContainer windsorContainer = new WindsorContainer();
Program unityProgram = unityContainer.Resolve<Program>();
Program castleProgram = windsorContainer.Resolve<Program>();
}
}
El UnityContainer me va a devolver una instancia del programa, en tanto que el contenedor Windsor arrojará un ComponentNotFoundException.
Puedo ver argumentos para ambos comportamientos y no me importa con qué termine, sin embargo, Prism V2 Drop 8 (el último al momento de escribir) se basa en el comportamiento de Unity internamente, solicitando clases que no se han registrado .
En lugar de buscar y registrar todas estas clases para Prism, prefiero que Windsor se comporte como Unity. No he encontrado nada en google que me ayude a hacer esto (aunque mi terminología puede ser incorrecta) y la documentación de Windsor es bastante mala ...
¿Alguien puede sugerir una solución a este problema?
¿no este tipo de derrota el propósito de una COI? Si hubiera resuelto IProgram, ¿encontraría una definición de clase que implemente IProgram en ese caso? – jishi
Supongo que todavía tiene la ventaja de la inyección de dependencia en la clase, incluso si no utiliza una interfaz. –
jishi: las respuestas a sus preguntas son no y no. No, no infringe el propósito de IoC. No, no mapea las interfaces sin que estén registradas. – Anthony