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