【发布时间】:2015-12-12 13:33:51
【问题描述】:
我在 Visual Studio 中有多个项目,每个程序集都有一个 Ninject-Moduledefinition。该解决方案的结构为“洋葱架构”。模块仅在引用程序集的项目中加载。
我有这些层
- 存储库
- 业务层
- 网页界面
目前Web-UI-Layer不需要引用repository,因为BusinessLayer的Ninject-Moduleloader从Repository-Moduleloader中获取了所有引用的绑定
我的 Repository-Layer 没有对 ASP.Net 程序集的任何引用。所以我不能将我的 NinjectModules 的范围设置为“InRequestScope”。我现在正在尝试在我的 WebUI 层中设置 ModuleLoader 的配置,但存储库的模块仍然不是“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 本身加载的模块?
- 是第一个语句只绑定配置,还是已经从“*.dll”找到的所有程序集中加载了 NinjectModules?在那种情况下,我不需要第二条语句“kernel.Load(new BusinessLayer...”,对吧?
【问题讨论】:
标签: c# asp.net ninject onion-architecture