我被这个关于(.NET 4.0)协方差和逆向支持Autofac的问题引发了,现在我正试图实现类似的东西,但没有任何运气.
我试图做到的,是在这样的方式配置Autofac,当我解决一个具体的IEventHandler<TEvent>(使用示范的目的container.Resolve,但通常的过程中使用构造器注入),Autofac将返回我MultipleDispatchEventHandler<TEvent>是包装所有注册的事件处理程序,它可分配来自请求的处理程序.
换句话说,当我写这个:
var handler = container
.GetInstance<IEventHandler<CustomerMovedEvent>>();
handler.Handle(new CustomerMovedEvent());
Run Code Online (Sandbox Code Playgroud)
关于应用程序设计(如下所示),我希望MultipleDispatchEventHandler<CustomerMovedEvent>返回包含a CustomerMovedEventHandler和a的应用程序NotifyStaffWhenCustomerMovedEventHandler.
这是应用程序设计:
// Events:
public class CustomerMovedEvent { }
public class CustomerMovedAbroadEvent : CustomerMovedEvent { }
public class SpecialCustomerMovedEvent : CustomerMovedEvent { }
// Event handler definition (note the 'in' keyword):
public interface IEventHandler<in TEvent>
{
void Handle(TEvent e);
}
// Event handler implementations:
public class CustomerMovedEventHandler
: IEventHandler<CustomerMovedEvent>
{
public void Handle(CustomerMovedEvent …Run Code Online (Sandbox Code Playgroud)