可能重复:
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。如何区分两个适配器,以便控制器具有每种类型的适配器?
答案 0 :(得分:3)
您可以在注册控制器时使用InjectionConstructor
和ResolvedParameter
个对象:
.RegisterType<IAdapter, DaveAdapter>()
.RegisterType<IAdapter, BobAdapter>("Bob")
.RegisterType<ControlController, ControlController>(
new InjectionConstructor(
new ResolvedParameter<IAdapter>(),
new ResolvedParameter<IAdapter>("Bob")
))