Сканирование ядра Ninject 3.0 MVC не работает
Что случилось с kernel.Scan в Ninject 3.0?
kernel.Scan(scanner =>
{
scanner.FromAssembliesMatching("LR.Service.*");
scanner.FromAssembliesMatching("LR.Repository.*");
scanner.BindWithDefaultConventions();
}
Получите ошибку сборки. 'Ninject.IKernel' не содержит определения для 'Scan' и не имеет метода расширения 'Scan', принимающего первый аргумент типа 'Ninject.IKernel'
Несколько часов билась в мою голову, пытаясь понять, на что это можно изменить. Не видел ни одного хорошего сайта или постов, объясняющих, как это просто исправить.
Все это работало отлично, какой-то кусок получил обновление. После нескольких часов выяснения, почему ничего не работает. Я не переустанавливал его (сознательно), не уверен, что случилось, но теперь я переустанавливал все до 3.0, считал, что это будет лучше, теперь я застрял с отсутствием какой-либо помощи.
1 ответ
Буду проверять это позже. Думаю, это то, что я искал.
http://sharpfellows.com/post/Ninject-Auto-registration-is-changing-in-version-3.aspx
ОБНОВИТЬ:
Посмотри мой другой вопрос про автообнаружение ninject3
Недавно я столкнулся с очень похожей проблемой из-за неправильной ссылки на некоторую библиотечную документацию "AutoLoadModules". Мне было трудно понять, что это на самом деле вещь из прошлого. И половина принятого ответа теперь мертвая ссылка. Так что на случай, если это может быть полезно кому-то еще...
В NInject3 произошло несколько критических изменений в Ninject.Extensions.Conventions
. Итак, если вы ищетеAutoLoadModules
, IKernel.Scan
и тому подобное, невезение.
Вместо этого у вас теперь остается только IKernel.Bind
метод расширения:
_kernel = new StandardKernel();
_kernel.Bind(s=> s.FromAssembliesMatching("LR.Service.*", "LR.Repository.*")
.SelectAllClasses()
.BindDefaultInterface());