#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. Отредактировано.