c# - injection - Codifique su propio contenedor de IOC
unity ioc (10)
Alguien ha escrito uno en C #: http://ninject.org/ .
Es de código abierto, así que puedes obtener el código y ver cómo lo hizo este tipo.
¿Alguien ha escrito su propio Contenedor de COI en C #? O la gran mayoría de la gente usa los diversos marcos como Spring. ¿Cuáles son los pros y los contras de cada uno?
James Kovacs presenta un episodio de dnrTV sobre este tema aquí . Aquí también escribió un artículo . Sin embargo, durante el artículo menciona que probablemente quieras utilizar uno de los preconstruidos. Ya que hay muchos estilos diversos para ellos. Ninject, StructureMap, Autofac usan una interfaz fluida. Spring, Castle Windsor y Unity tienen más configuraciones XML. Castle Windsor también puede usar boo como interfaz. Muchos tienen anzuelos a otros marcos como Unity a EntLib o Castle Windsor a Monorail y el resto del Proyecto Castle.
Entonces, a menos que realmente necesite o desee algo que no esté provisto por los marcos de IOC disponibles, entonces, ¿por qué no usar uno de ellos?
Ayende también escribió acerca de cómo escribir su propio contenedor IoC en su publicación de blog Construyendo un contenedor IoC en 15 líneas de código , creo que tiene la misma opinión que todos los demás: no construya la suya propia si no es necesario.
Autofac es excelente.
He escrito uno usando menos de 15 líneas. Solo dos métodos de extensión para un diccionario.
Si está buscando un contenedor IoC liviano y de alto rendimiento, entonces debería consultar Munq
Creé mi propio contenedor IoC que facilita la depuración de la creación del objeto (incluso cuando no tiene acceso al código del contenedor). Cuando se crea el objeto, al presionar Paso a (F11), aparece el código para crear el objeto. El código completo se puede ver aquí .
A menos que haya una muy buena razón, no reinventaría la rueda e implementaría un contenedor IoC, especialmente porque hay muchas opciones buenas como Unity , Ninject o Spring.net .
Si necesita / desea eliminar la dependencia a cualquiera de estos contenedores IoC, puede probar la interfaz Common Service Locator .
Es un buen ejercicio escribir el suyo propio, pero al final es posible que desee utilizar un contenedor existente. Puedes comenzar con esta en 15 líneas de código.