Я довольно плохо знаком с Ninject и DI в целом.Я использую NHibernate в качестве своего ORM для своего приложения MVC и был вполне доволен моими результатами.То есть, пока я не обновил Ninject 2.1 до 2.2.
Теперь я получаю ошибки в своем классе NinjectWebsiteApplication из-за использования ядра Ninject в качестве локатора ресурсов.
Пример:
void NinjectWebsiteApplication_BeginRequest(object sender, System.EventArgs e)
{
ILogger logger = Kernel.Get<ILogger>();
logger.Debug(“**********REQUEST BEGIN****************”);
logger.Debug(“**** URL = ” + Request.Url.AbsolutePath);
}
Пример 2:
protected override void OnApplicationStarted()
{
var bootstrapper = Kernel.Get<Bootstrapper>();
bootstrapper.RegisterAllAreas();
AreaRegistration.RegisterAllAreas();
......
(More stuff here, like AutoMapper mappings, etc.)
......
}
* Класс Bootstrapper
- это класс, который я создал, где я регистрирую свои маршруты, глобальные фильтры и т. Д.
В обоих приведенных выше примерах, Я получаю предупреждение о функциях Kernel.Get()
, которое гласит:
'Ninject.Web.Mvc.NinjectHttpApplication.Kernel' устарел: «Не используйте Ninject в качестве локатора служб»
После нескольких поисков по этому вопросу, общее согласие заключается в том, что это правда.
Я пытаюсь обойти это, но я немного растерялся относительно того, что делать.
Я загрузил новейший пакет Ninject.Web.Mvc NuGet, который создает статический класс NinjectMVC3 в папке App_Start.Я вижу, что они ссылаются на Microsoft.Web.Infrastructure.DynamicModuleHelper
, но я не понимаю, где это вписывается в то, что я пытаюсь сделать.
Если у кого-нибудь есть какие-то подсказки, которые помогут мне исправить мой маленький беспорядок,Я был бы очень признателен!