使用ninject注入在其他程序集中的类
本文关键字:程序集 集中 程序 其他 ninject 注入 使用 | 更新日期: 2023-09-27 18:17:41
我的项目是使用可移植区域完成的,我使用ninject for DI,我正在注入一个在其他程序集中的类,所以我在areregistraction中有以下代码:
DependencyResolver.Current.GetService<IModuleManager>().Add(this.module);
IKernel kernel = DependencyResolver.Current.GetService<IKernel>();
kernel.Bind<IConfigurationRepository>().To<ConfigurationRepository>();
在我的构造函数中,我有这样的代码:
public RequestController(IconfigurationRepository configurationRepository)
{
this.configurationRepository= configurationRepository;
}
但是由于某些原因,configurationRepository是null
但是如果我输入:
public RequestController()
{
this.configurationRepository = ((StandardKernel)DependencyResolver.Current.GetService<IKernel>()).GetAll<IConfigurationRepository>().First();
}
很好。它们之间有什么不同?
如果注册了几个IConfigurationRepository
,第二个实现将工作,但在这种情况下,第一个实现将失败。
第一种情况的例外是什么?如果在第二种情况下用Single
代替First
会发生什么?