2012-10-18 57 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