Possible Duplicate:
Unity IOC container and how to resolve different instances of the same interface




我有一个具有两个参数的控制器构造函数,这些参数实现了如下所示的相同接口。我试图在下面也显示的Unity中注册这些类型,但是遇到了问题。

控制器构造器

public ControlController(IAdapter daveAdapter, IAdapter bobAdapter)
{
        DaveAdapter = daveAdapter;
        BobAdapter = bobAdapter;
}


Unity注册

 container
.RegisterType<IAdapter, DaveAdapter>()
.RegisterType<IAdapter, BobAdapter>()


构造控制器时,两个适配器都解析为DaveAdapter,而不是一个Dave和一个Bob。如何告诉unity区分两个适配器,以便控制器具有每种类型的适配器?

最佳答案

您可以在注册控制器中使用InjectionConstructorResolvedParameter对象:

.RegisterType<IAdapter, DaveAdapter>()
.RegisterType<IAdapter, BobAdapter>("Bob")

.RegisterType<ControlController, ControlController>(
    new InjectionConstructor(
      new ResolvedParameter<IAdapter>(),
      new ResolvedParameter<IAdapter>("Bob")
))

10-02 01:25