首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在加载Ninject模块后设置所有绑定的范围

在加载Ninject模块后设置所有绑定的范围
EN

Stack Overflow用户
提问于 2015-03-12 01:33:52
回答 1查看 1K关注 0票数 2

我想组织我的尼尼姆绑定,方法是将它们分离成尼尼微模块。然而,我有不止一个应用程序将使用这些模块。其中一个是ASP.Net MVC应用程序,另一个是控制台应用程序,另一个是windows服务等等。在MVC应用程序中,我想使用InRequestScope作用域绑定,但在另一个应用程序中(它引用了InRequestScope模块所在的核心程序集),我想使用不同的作用域绑定。这个是可能的吗?

随着基础设施的发展,以及所有绑定的注册变得非常庞大和冗长,我最终在几个不同的组合根中重复这些绑定--它们之间唯一的区别是每个绑定的生存期范围。我真的很想把这个弄干。

最理想的是以下内容(伪代码):

多个应用程序引用的核心程序集

代码语言:javascript
复制
public class MyModule : NinjectModule {
    public override Load(){
        Kernel.Bind<IMyType>().To<MyType>();
    }
}

MVC应用程序中的

代码语言:javascript
复制
kernel.Load(new MyModule())
    .Configure(p => p.UseInRequestScope);

另一个应用程序中的

代码语言:javascript
复制
kernel.Load(new MyModule())
    .Configure(p => p.UseInTransientScope);
EN

回答 1

Stack Overflow用户

发布于 2015-03-12 02:48:23

复合根用于合成应用程序。通过扩展,如果您有多个应用程序,那么您应该有同样多的组合根。

它们是不是用来重用的,因为这将紧密地将应用程序连接在一起。正如这篇文章所指出的:

尝试重用组合根并不比尝试“重用”应用程序更有意义。

因此,简单地说,答案是每个应用程序使用一个组合根,然后您可以根据需要对每个应用程序的关系进行范围调整。通过组合应用程序的组合根,您将创建(至少)一个人为的问题,如果您只是将它们分开就不存在了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29000490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档