Autofac tiene módulos, Windsor tiene Instaladores y Registros StructureMap ... con Simple Injector ¿cómo puedo empaquetar la lógica de configuración en clases reutilizables?¿Cómo puedo emular Módulos/Instaladores/Registros con Simple Injector
que he intentado:
public interface IModule { }
public class FooModule : IModule
{
public FooModule(SimpleInjector.Container container)
{
container.RegisterSingleton<IBar, Bar>();
container.RegisterSingleton<IFoo, Foo>();
}
}
y lo uso en la raíz Composición:
public static void Main(string[] args)
{
var container = new SimpleInjector.Container();
container.RegisterCollection<IModule>(new FooModule(container));
...
}
Sin embargo, FooModule
depende de envase y tal vez en no es una buena práctica ... ver http://code.google.com/p/autofac/wiki/BestPractices :
Si los componentes tienen una dependencia en el contenedor, Mire cómo están utilizando el contenedor para recuperar servicios y agregue esos servicios a los argumentos del constructor del componente (dependencia inyectado) en su lugar.
Tenga en cuenta que, incluso con Autofac, su 'FooModule' dependerá del contenedor (o con Autofac,' ContainerBuilder, ya que Autofac divide el contenedor en dos tipos). Eche un vistazo a [esta documentación de Autofac] (http://code.google.com/p/autofac/wiki/StructuringWithModules) y verá claramente que los módulos toman esta dependencia. Para un módulo, simplemente necesita el contenedor, pero eso no importa ya que un módulo será parte de su raíz de composición. – Steven