I가로드 오버라이드에 다음 (아래 손질) 로직이있는 Autofac 모듈 :정지 Autofac 모듈 등록 이미 등록 된 구성 요소
protected override void Load(ContainerBuilder builder)
{
foreach (var componentType in allTypesInAllAvailableAssemblies) // Set elsewhere
{
var handlerInterfaces = componentType.GetInterfaces().Where(i => i.IsClosedTypeOf(typeof(IMessageHandler<>)));
if (handlerInterfaces.Any())
builder.RegisterType(componentType).As(handlerInterfaces);
}
}
이 자체가 메시지 처리기를 선언하는 클래스를 찾고 및 구현하고있는 모든 IMessageHandler 인터페이스에 등록합니다.
내가 원하는 것은 이 아닙니다.은 이미 등록 된 구성 요소를 등록합니다. 보너스로, 이미 존재하지 않는 경우 기존 등록을 업데이트하여 메시지 처리기 인터페이스에 대해 해결할 수 있다면 이상적입니다. 이 코드는
내가에 등록 조작에 대한 AttachToComponentRegistration
재정의를 사용했습니다 (가능한 메시지 핸들러 후보 포함) 등록 된 후 모든 다른 유형을 실행하는 것으로 가정 할 수있다 인수를 위해서
내 디자인을 다시 생각해보고 플러그인이 명시 적으로 핸들러를 선언하도록해야합니까?
AnyConcreteTypeNotAlreadyRegisteredSource 클래스를 사용해 보셨습니까?참조 : http://stackoverflow.com/questions/3413660/ –