Autofac에는 모듈이 있고 윈저에는 설치자와 StructureMap 레지스트리가 있습니다 ... 간단한 인젝터로 어떻게 구성 논리를 재사용 가능한 클래스로 묶을 수 있습니까?간단한 인젝터로 모듈/인스톨러/레지스트리를 에뮬레이션하는 방법
public interface IModule { }
public class FooModule : IModule
{
public FooModule(SimpleInjector.Container container)
{
container.RegisterSingleton<IBar, Bar>();
container.RegisterSingleton<IFoo, Foo>();
}
}
그리고 컴포지션 루트에서 사용 :
나는 시도
public static void Main(string[] args)
{
var container = new SimpleInjector.Container();
container.RegisterCollection<IModule>(new FooModule(container));
...
}
그러나, FooModule
컨테이너에 의존하고 아마 좋은 연습에 ... 이 http://code.google.com/p/autofac/wiki/BestPractices 참조 :
구성 요소가 컨테이너에 종속 된 경우, 컨테이너를 사용하여 서비스를 검색하는 방법을 살펴보고 해당 서비스를 구성 요소의 (종속성 주입) 생성자 인수에 대신 추가하십시오.
Autofac이있는 'FooModule'은 컨테이너 (또는 Autofac이 두 가지 유형으로 컨테이너를 분할하기 때문에 'ContainerBuilder'인 Autofac를 사용)에 따라 달라집니다. [이 Autofac 설명서] (http://code.google.com/p/autofac/wiki/StructuringWithModules)를 살펴보면 모듈이 이러한 종속성을 가짐을 분명히 알 수 있습니다. 모듈의 경우 컨테이너가 필요하지만 구성 루트에 모듈이 포함되므로 중요하지 않습니다. – Steven