与ninject中的多个实现的接口

Jef*_*nby 2 c# dependency-injection ninject

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

public interface IProducer
{
}

public class Producer : IProducer
{
}

public class FaultProducer : IProducer
{
}
Run Code Online (Sandbox Code Playgroud)

我有两个不同的类,它们都将IProducer作为依赖项.

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

public class TradePublisher
{
    public TradePublisher(IProducer producer)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

TradePublisher需要一个制作人,ConsumerChannel需要一个FaultProducer.我只能绑定IProducer到一个实现.在温莎我可以使用命名绑定来做到这一点,Dependency.OnComponent但我在Ninject中找不到类似的能力.有没有办法在Ninject中注入特定的依赖项?

Ahm*_*IEM 5

对Ninject 使用命名绑定:

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

public TradePublisher([Named("FaultProducer")] IProducer producer)
    //...
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法在我的绑定中执行此操作?即,有没有办法将我的绑定信息保存在我的NinjectModule中,就像我可以将WithConstructorArgument用于其他参数一样? (2认同)