使用 WhenInjectedExactlyInto 和默认绑定时绑定顺序是否重要?
Does Binding Order Matter When Using WhenInjectedExactlyInto and a Default Binding?
对于多个 Ninject 模块,我最终得到了一个特定接口的绑定顺序,如下所示:
Kernel.Bind<ILogger>().To<Logger>().WhenInjectedExactlyInto(typeof(TroubleshootingLogger), typeof(RegularAndStashLogger), typeof(LogStashLogger), typeof(KafkaSendClient));
Kernel.Bind<ILogger>().To<TroubleshootingLogger>();
Kernel.Bind<ILogger>().To<RegularAndStashLogger>().WhenInjectedExactlyInto<ProcessConfiguration>();
我的问题是,当我为 ProcessConfiguration 的实例调用内核时,它会注入 TroubleshootingLogger(默认绑定)还是 RegularAndStashLogger(确切绑定)?
我继续构建了一个小测试程序来自己确定(我承认我应该先这样做)。
事实证明,Ninject 确实会在回退到默认绑定之前检查所有 "WhenInjectedExactlyInto" 绑定。
程序(依赖于Ninject到运行,呃):pastebin.com/9Kpsb25h
对于多个 Ninject 模块,我最终得到了一个特定接口的绑定顺序,如下所示:
Kernel.Bind<ILogger>().To<Logger>().WhenInjectedExactlyInto(typeof(TroubleshootingLogger), typeof(RegularAndStashLogger), typeof(LogStashLogger), typeof(KafkaSendClient));
Kernel.Bind<ILogger>().To<TroubleshootingLogger>();
Kernel.Bind<ILogger>().To<RegularAndStashLogger>().WhenInjectedExactlyInto<ProcessConfiguration>();
我的问题是,当我为 ProcessConfiguration 的实例调用内核时,它会注入 TroubleshootingLogger(默认绑定)还是 RegularAndStashLogger(确切绑定)?
我继续构建了一个小测试程序来自己确定(我承认我应该先这样做)。
事实证明,Ninject 确实会在回退到默认绑定之前检查所有 "WhenInjectedExactlyInto" 绑定。
程序(依赖于Ninject到运行,呃):pastebin.com/9Kpsb25h