Я использую сборки Ninject и Ninject.Web с приложением веб-форм.В файле global.asax я указываю привязки следующим образом:
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel();
// Vendor Briefs.
kernel.Bind<IVendorBriefRepository>().To<VendorBriefRepository>().InRequestScope();
kernel.Bind<IVendorBriefController>().To<VendorBriefController>().InRequestScope();
// Search Services.
kernel.Bind<ISearchServicesController>().To<SearchServicesController>().InRequestScope();
kernel.Bind<ISearchServicesRepository>().To<SearchServicesRepository>().InRequestScope();
// Error Logging
kernel.Bind<IErrorLogEntryController>().To<ErrorLogEntryController>().InRequestScope();
kernel.Bind<IErrorLogEntryRepository>().To<ErrorLogEntryRepository>().InRequestScope();
return kernel;
}
}
Тогда на моих страницах я просто должен заставить их наследовать от Ninject.Web.PageBase
.Затем я могу настроить свойства кода позади страниц и поставить над ним атрибут [inject]
.
[inject]
public IVendorBriefController vendorBriefController { get; set; }
Это прекрасно работает.Но теперь мне нужно внести некоторые зависимости в сам файл Global.asax.Мне нужен экземпляр IErrorLogEntryController
в моем Application_Error
событии.Как решить эту проблему и использовать указанную привязку для абстрактного типа?
protected void Application_Error(object sender, EventArgs e)
{
IErrorLogEntryController = ???;
}