1

我的项目是使用便携式区域完成的,我使用 ninject 进行 DI,我正在注入一个在其他程序集中的类,所以我在 areaRegistraction 中有以下代码:

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 为空

但如果我说:

public RequestController()
{
   this.configurationRepository = ((StandardKernel)DependencyResolver.Current.GetService<IKernel>()).GetAll<IConfigurationRepository>().First();
}

它工作正常。他们之间有什么不同?

任何线索将不胜感激。

4

1 回答 1

3

如果注册了几个,则第二个实现将起作用,IConfigurationRepository但在这种情况下第一个将失败。

第一种情况有什么例外?如果在第二种情况下使用Single而不是会发生什么?First

于 2011-12-14T01:11:14.137 回答