【问题标题】:Interface with multiple implementations in ninjectninject 中与多个实现的接口
【发布时间】:2013-10-07 19:32:02
【问题描述】:

我有一个具有两种不同实现的接口。

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 绑定到一个实现。在 Windsor 中,我可以使用命名绑定和 Dependency.OnComponent 来做到这一点,但我在 Ninject 中找不到类似的功能。有没有办法在 Ninject 中注入特定的依赖项?

【问题讨论】:

    标签: c# dependency-injection ninject


    【解决方案1】:

    named bindings 用于 Ninject:

    Bind<IProducer>().To<FaultProducer>().Named("FaultProducer");
    
    public TradePublisher([Named("FaultProducer")] IProducer producer)
        //...
    }
    

    【讨论】:

    • 有没有办法在我的绑定中做到这一点?即,有没有办法将我的绑定信息保留在我的 NinjectModule 中,就像我可以将 WithConstructorArgument 用于其他参数一样?
    最近更新 更多