代码之家  ›  专栏  ›  技术社区  ›  Rohan West

Ninject,多个服务绑定

  •  4
  • Rohan West  · 技术社区  · 17 年前

    我正在使用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尝试了完全相同的方法,它如我所料。

    1 回复  |  直到 12 年前
        1
  •  4
  •   Nate Kohari    17 年前