뭔가 :Autofac 컨테이너 빌더에서 기존 등록을 제거 할 수 있습니까? 그 라인을 따라
builder.RegisterType<MyType>().As<IType>();
builder.RegisterType<MyType2>().As<IType>();
builder.DeRegisterType<MyType>().As<IType>()
var container = builder.Build();
var types = container.Resolve<IEnumerable<IType>>();
Assert.IsTrue(types.Count == 1);
Assert.IsTrue(types[0].GetType == typeof(MyType2));
시나리오 : 나는 어셈블리의 무리를 통과하고 내가 가서 내가 유형을 등록하지만 난 원하는 내가 주어진 유형의 하나의 구현이 있는지 확인하십시오. 컨테이너를 만들기 전에이 작업을 수행해야합니다. 나는 그것을 독자적으로 추적 할 수 있었지만 Autofac이 나를 조금 도와 줄 수 있다면 좋을 것입니다.
나는 이것을 원하면 또 다른 이유가있다. RegisterAssemblyTypes를 사용하면 'InstancePerDependencyScope'해상도의 기본 '배경'을 얻는다. 이 후 그들 중 일부를'InstancePerLifetimeScope'으로 업그레이드하려고합니다. 이것은 일부 인터페이스 (예 : 둘 이상의 클래스에서 구현되는 인터페이스)의 열거 형을 해결할 때까지 다시 등록함으로써 정상적으로 작동합니다. '배경'등록을 제거하면이를 허용 할 수 있습니다. –
필자가 특별히 지적한 'RegisterAssemblyTypes().()'및 기타 등록 된 어셈블리 유형의 선택 및 처리를 제어 할 수있는 유창한 방법을 발견했습니다. –