Внедрение класса в другой сборке с помощью ninject

Мой проект выполнен с использованием переносимых областей, я использую 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;
}

Но по какой-то причине configRepository имеет значение null

Но если я поставлю:

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

Работает нормально. Чем они отличаются?

Любая подсказка будет по достоинству оценена.

1 ответ

Решение

Вторая реализация будет работать, если несколько IConfigurationRepository зарегистрированы, но первый из них потерпит неудачу в этом случае.

Что за исключение в первом случае? Что произойдет, если вы используете Single вместо First во втором случае?

Другие вопросы по тегам