Unity MVC3控制器构造函数问题

时间:2012-10-18 13:39:21

标签: c# asp.net-mvc-3 unity-container

  

可能重复:
  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。如何区分两个适配器,以便控制器具有每种类型的适配器?

1 个答案:

答案 0 :(得分:3)

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

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

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