У меня есть несколько проектов в Visual Studio с Ninject-Moduledefinition для каждой сборки. Это решение структурировано как «Луковая архитектура». Модули загружаются только в Проекты со ссылками на сборку.Установить область для модулей ниндзе в архитектуре лука
У меня есть эти слои
- Repository
- BusinessLayer
- Web-интерфейс
На данный момент веб-UI - Layer не нужно ссылаться на хранилище, потому что Ninject-Moduleloader из списка BusinessLayer получает ссылки со ссылкой на Replaceitory-Moduleloader
My Repository-Layer не имеет ссылки на сборки ASP.Net. Поэтому я не могу установить рамки моих NinjectModules на «InRequestScope». Я пытаюсь теперь установить конфигурацию ModuleLoader в моем WebUI-слое, но модули репозитория еще не «InRequestScope»
private static void RegisterServices(IKernel kernel) {
kernel.Bind(i => i.From("*.dll")
.SelectAllClasses()
.BindDefaultInterface()
.Configure(x => x.InRequestScope()));
kernel.Load(new BusinessLayer.BusinessLayerModuleLoader());
kernel.Load(new WebUIInjector());
}
- Почему эта конфигурация не работает с модулями, нагружен BusinessLayerModuleLoader сам?
- - это первое утверждение, связывающее только конфигурацию, или оно уже загружает NinjectModules из всех сборок, найденных с помощью «* .dll»? В этом случае я бы не нужно второе утверждение «kernel.Load (новый BusinessLayer ...» правильно?
thx! Не знаю точно, почему, но селектор «* .dll» не работал для меня. Мне пришлось изменить это на имя моего RepositoryDll. Кроме того, я пропустил пункт «IncludingNonePublicTypes» здесь. Теперь он работает отлично! спасибо – Weissvonnix