Сканирование ядра 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

Ninject 3.0 MVC kernel.bind error Авторегистрация

Недавно я столкнулся с очень похожей проблемой из-за неправильной ссылки на некоторую библиотечную документацию "AutoLoadModules". Мне было трудно понять, что это на самом деле вещь из прошлого. И половина принятого ответа теперь мертвая ссылка. Так что на случай, если это может быть полезно кому-то еще...

В NInject3 произошло несколько критических изменений в Ninject.Extensions.Conventions. Итак, если вы ищетеAutoLoadModules, IKernel.Scan и тому подобное, невезение.

Вместо этого у вас теперь остается только IKernel.Bind метод расширения:

    _kernel = new StandardKernel();
    _kernel.Bind(s=> s.FromAssembliesMatching("LR.Service.*", "LR.Repository.*")
                      .SelectAllClasses()
                      .BindDefaultInterface());
Другие вопросы по тегам