2013-10-01 3 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 для других аргументов? –

Смежные вопросы