3

可能重复:
Unity IOC 容器以及如何解析同一接口的不同实例

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

控制器构造函数

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

统一注册

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

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

4

1 回答 1

3

您可以在注册控制器中使用InjectionConstructor和 对象:ResolvedParameter

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

.RegisterType<ControlController, ControlController>(
    new InjectionConstructor(
      new ResolvedParameter<IAdapter>(),
      new ResolvedParameter<IAdapter>("Bob")
))
于 2012-10-18T13:47:23.733 回答