Я использую Ninject 2 с веб-приложением ASP.NET MVC. Все зависимости обрабатываются должным образом по стеку (Controllers-> Services-> Repositories). Однако у меня есть несколько классов в проекте Services, которые не входят в эту «цепочку», которую я также хочу ввести, когда приложение запускается. Как я могу получить Ninject для их распознавания? У меня есть общедоступные свойства с атрибутами [Inject]
, но при запуске приложения они равны нулю. Что мне не хватает?Вопрос об инъекции при использовании Ninject 2 в приложении ASP.NET MVC
Вот мой MvcApplication класс:
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted() {
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel() {
var modules = new INinjectModule[] {
new Services.ServiceModule(),
new Data.DataModule()
};
var kernel = new StandardKernel(modules);
return kernel;
}
// route registration removed
}
Я проверил оба модуля, чтобы убедиться, что существуют правильные привязок.
Пример из модуля:
public class ServiceModule : NinjectModule
{
public override void Load() {
Bind<IAccountService>().To<AccountService>();
....
}
}
Да, я делаю это. Я обновлю вопрос –
Добавил код и попытался уточнить лучше –
Все выглядит хорошо. Можете ли вы опубликовать часть кода в одном из своих модулей? –