C# Ninject,多个服务绑定

C# Ninject,多个服务绑定,c#,inversion-of-control,ninject,C#,Inversion Of Control,Ninject,我正在使用Ninject加载几个模块。当两个模块试图为一个接口绑定两个不同的实现时,ninject会引发一个错误,该错误会导致一个接口的多个绑定 服务是不允许的 我使用的所有其他IoC框架(Unity、Windsor、Spring.net等) 它们都能够“注册”一个应用程序的多个实现 接口 让我举一个真实的例子: public class HealtMonitorEmailAlertServiceModule : StandardModule { public override void

我正在使用Ninject加载几个模块。当两个模块试图为一个接口绑定两个不同的实现时,ninject会引发一个错误,该错误会导致一个接口的多个绑定 服务是不允许的

我使用的所有其他IoC框架(Unity、Windsor、Spring.net等) 它们都能够“注册”一个应用程序的多个实现 接口

让我举一个真实的例子:

public class HealtMonitorEmailAlertServiceModule : StandardModule
{
    public override void Load()
    {
        this.Bind<IAlertService>().To<EmailAlertService>();
    }
}

public class HealtMonitorSmsAlertServiceModule : StandardModule
{
    public override void Load()
    {
        this.Bind<IAlertService>().To<SmsAlertService>();
    }
}

public class Program
{
    static void Main()
    {
        var emailService = new HealtMonitorEmailAlertServiceModule();
        var smsService = new HealtMonitorSmsAlertServiceModule();

        IKernel kernel = new StandardKernel(emailService, smsService);  
        kernel.Get<IAlertService>()
    }
}
公共类HealtMonitorEmailAlertServiceModule:StandardModule
{
公共覆盖无效负载()
{
this.Bind().To();
}
}
公共类HealtMonitorsSalertServiceModule:StandardModule
{
公共覆盖无效负载()
{
this.Bind().To();
}
}
公共课程
{
静态void Main()
{
var emailService=new HealtMonitorEmailAlertServiceModule();
var smsService=new HealtMonitorSmsAlertServiceModule();
IKernel内核=新的标准内核(emailService、SMSSService);
kernel.Get()
}
}

上面生成了一个异常,我希望它能够解析最后一个模块中注册的类型,以便加载到内核中。我使用Autofac尝试了完全相同的方法,效果与我预期的一样。

Ninject 2.0具有此功能,但Ninject 1.x没有。虽然2.0仍处于测试阶段,但我鼓励您看看,因为1.x将在几个月内结束使用。

感谢您的回复,我将很快查看Ninject 2.0。顺便说一句,你的忍者技能给我留下了深刻的印象。