【发布时间】:2015-03-12 01:33:52
【问题描述】:
我想通过将 Ninject 绑定分成 Ninject 模块来组织它们。但是,我有不止一个应用程序会使用这些模块。其中一个是 ASP.Net MVC 应用程序,另一个是控制台应用程序,另一个是 Windows 服务等。在 MVC 应用程序中,我想使用 InRequestScope 范围绑定,但在另一个应用程序中(引用Ninject 模块所在的核心程序集)我想使用不同的范围绑定。这可能吗?
随着我的基础设施的增长以及我所有绑定的注册变得非常庞大和冗长,我最终会在几个不同的组合根中重复这些绑定 - 它们之间的唯一区别是每个绑定的生命周期范围。我真的很想让这个更干燥。
理想的是以下(伪代码):
多个应用引用的核心组件
public class MyModule : NinjectModule {
public override Load(){
Kernel.Bind<IMyType>().To<MyType>();
}
}
在 MVC 应用程序中
kernel.Load(new MyModule())
.Configure(p => p.UseInRequestScope);
在另一个应用程序中
kernel.Load(new MyModule())
.Configure(p => p.UseInTransientScope);
【问题讨论】:
标签: c# dependency-injection ninject inversion-of-control