我正在使用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>()
}
}
上面的代码生成了一个异常,我希望它能解析最后一个模块中注册的类型,以便加载到内核中。我使用Autofac尝试了完全相同的方法,它如我所料。