使用ninject注入在其他程序集中的类



我的项目是使用可移植区域完成的,我使用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会发生什么?

相关内容

最新更新