2013-10-01 67 views
2

我有一個接口有兩個不同的實現。在ninject中有多個實現的接口

public interface IProducer 
{ 
} 

public class Producer : IProducer 
{ 
} 

public class FaultProducer : IProducer 
{ 
} 

我有兩個不同的類,都將IProducer作爲依賴項。

public class ConsumerChannel 
{ 
    public ConsumerChannel(IProducer producer) 
    { 
    } 
} 

public class TradePublisher 
{ 
    public TradePublisher(IProducer producer) 
    { 
    } 
} 

TradePublisher需要生產者和ConsumerChannel需要一個FaultProducer。我只能將IProducer綁定到一個實現。在溫莎我可以用命名綁定和Dependency.OnComponent做到這一點,但我無法在Ninject中找到類似的功能。有沒有辦法在Ninject中注入特定的依賴關係?

回答

5

使用named bindings爲Ninject:

Bind<IProducer>().To<FaultProducer>().Named("FaultProducer"); 

public TradePublisher([Named("FaultProducer")] IProducer producer) 
    //... 
} 
+2

有沒有辦法在我的綁定來做到這一點?也就是說,有沒有一種方法可以將我的綁定信息保存在我的NinjectModule中,就像我可以使用WithConstructorArgument用於其他參數一樣? –