4
Autofac에서 인터페이스의 모든 구현을 등록 해제 할 수 있습니까?Autofac이 인터페이스의 모든 구현을 등록 해제합니다.
내 시나리오 :
나는 두 개의 모듈, 하나 DefaultModule 몇 가지 조건이 충족 될 경우 나중에 SpecificModule를 등록합니다.
builder.RegisterModule(new DefaultModule());
if (someCondition)
{
builder.RegisterModule(new SpecificModule());
}
두 모듈은 인터페이스의 여러 명명 된 인스턴스를 등록합니다. SpecificModule에서로드 기능 내부
builder.RegisterType<DefaultSomething1>().Named<ISomething>("DefaultSomething1").SingleInstance();
builder.RegisterType<DefaultSomething2>().Named<ISomething>("DefaultSomething2").SingleInstance();
: DefaultModule에서로드 기능 내부
내가 ISomething의 모든 이전 등록의 등록을 취소 할 SpecificModule을 등록 할 때
builder.RegisterType<SpecificSomething1>().Named<ISomething>("SpecificSomething1").SingleInstance();
builder.RegisterType<SpecificSomething2>().Named<ISomething>("SpecificSomething2").SingleInstance();
그들은 주입되기 때문에 다른 생성자로 컬렉션으로.
public SomeClass(IEnumerable<ISomething> somethingCollection)
{
_somethingCollection = somethingCollection;
}
이것은 가능합니까? 아니면 다른 방식으로하는 것이 더 나은가?