Ninject корректно не привязывает классы из сборки

#c# #.net #ninject

#c# #.net #ninject

Вопрос:

Что касается следующего кода:

 kernel.Bind(scan => scan.FromAssemblyContaining<IMediator>()
    .SelectAllClasses()
    .BindDefaultInterface()
    .Configure(o => o.InRequestScope()));
  

Я выполняю этот вызов из класса контейнера в моем веб-проекте. Я ожидал бы, что другие проекты, которые содержат IMediator в любом месте этого проекта, будут подхвачены этой привязкой, и все классы в этом проекте будут привязаны к интерфейсам по умолчанию. Однако это не тот случай.

Я замечаю, что ни один из классов во внешних проектах не привязан. Мне интересно, что делает этот вызов на самом низком возможном уровне.

  • Какие сборки он просматривает и не должен ли он включать каждый проект в мое решение?
  • В какой степени мне нужно использовать IMediator в других проектах, чтобы его можно было использовать здесь?
  • Чего не хватает для того, чтобы я получил ожидаемое поведение: это сканирует все мои проекты, видит, что IMediator используется в этом коде, получает все классы в этом проекте, связывает их в соответствии с соглашением по умолчанию.
  • Я полностью отключен и что-то здесь упускаю? Есть какие-либо разъяснения?

Пояснения:

  • Я правильно использую соглашения о привязке по умолчанию
  • Ради этого вопроса меня не интересуют другие настройки, касающиеся обработчиков. Я специально пытаюсь понять этот точный вызов и почему мои классы без обработчика, без запроса, не являются обязательными.

Комментарии:

1. Это Ninject? Это вообще непонятно.

2. О, вау, спасибо, что обратили на это внимание @DavidG! Полный сбой мозга, имелся в виду Ninject, а не MediatR. Отредактировано.