如何自动注册Castle Windsor的开放式通用界面?

时间:2018-04-16 14:29:41

标签: inversion-of-control castle-windsor ioc-container open-generics castle-windsor-3

我需要自动将我的开放通用接口注册到其实现类 我的界面就像是IIntegrationEventHandler

public interface IIntegrationEventHandler<in TIntegrationEvent> 
    where TIntegrationEvent : BaseIntegrationEvent
{
    Task HandleAsync(TIntegrationEvent @event);
}

我的处理程序将是那样的

    public class EmployeeEventsHandler : IIntegrationEventHandler<EmployeeUserCreated>
{
    public async Task HandleAsync(EmployeeUserCreated @event)
    {
        throw new NotImplementedException();
    }        
}

Castle Windsor是否有任何通用的方法来进行此类注册而无需手动执行每个处理程序,我搜索了很多但没有任何请注意我没有基本处理程序类,只有通用接口和实施类

1 个答案:

答案 0 :(得分:3)

按惯例注册应该在这里工作:

var container = new WindsorContainer();

container.Register(
    Classes.FromAssemblyNamed("YourHandlersAssemblyName")
    .BasedOn(typeof(IIntegrationEventHandler<>))
    .WithServiceFirstInterface());

var handler = container.Resolve<IIntegrationEventHandler<EmployeeUserCreated>>();