相关疑难解决方法(0)

Autofac:隐藏一个复合背后的多个逆变实现

我被这个关于(.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)

c# dependency-injection ioc-container covariance autofac

14
推荐指数
2
解决办法
2090
查看次数