Я использую Ninject 2 с веб-приложением ASP.NET MVC. Все зависимости должным образом обрабатываются в стеке (Controllers-> Services-> Repositories). Однако у меня есть некоторые классы в проекте Services, которые не входят в эту «цепочку», которые я также хочу добавить при запуске приложения. Как мне заставить Ninject их узнать? У меня есть общедоступные свойства с атрибутами [Inject]
, но когда приложение запускается, они нулевые. Чего мне не хватает?
Вот мой класс 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>();
....
}
}