2012-10-18 59 views
3

可能重复:
Unity IOC container and how to resolve different instances of the same interface团结MVC3控制器构造问题

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

控制器构造

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

统一登记

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

当所述控制器被构造两个适配器解析为DaveAdapter的,而不是一个Dave和一个鲍勃。我该如何告诉单位来区分两个适配器,以便控制器具有每种类型的适配器?

+0

我不知道团结,但Ninject允许根据参数名绑定。 – tschmit007

回答

3

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

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

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

谢谢,这似乎在伎俩! 从未想过注册控制器并使用注入构造函数! :d – scarlin