我对控制台应用程序和 MVC Web 应用程序使用相同的 DAL 基础结构,并且我需要在 MVC Web 应用程序中为 InRequestScope 配置一些内容,但需要知道当 OnePerRequestModule 没有配置时 InRequestScope 的默认回退是什么没有被配置(就像我的控制台应用程序中的情况一样)。
编辑 我的 Ninject 版本是 3.0.1.10。
最佳答案
阅读Cache and Collect article by Nate Kohari .
最新版本的 Ninject 将 OnePerRequestModule
分离到 Ninject.Web.Mvc
程序集中,因此您甚至无法看到 InRequestScope
code> 扩展而不在该上下文中工作。
对于控制台应用程序,通常您不会处理大量传入和传出的请求,这些请求需要 Dispose
d,因此 null
的默认作用域InTransientScope
[并且不指定范围]和/或允许类的隐式自注册可能是完全合适的。然而,一般来说,您最好弄清楚您的工作单元是什么,并明确管理何时需要处理需要处理的内容(因为对象不会被限定范围,不会发生处理,只是终结器将启动[与墨菲定律规定的时间])。
scoping section of the wiki关于这个主题也值得一读。
关于ninject - 如果未使用 OnePerRequestModule,Ninject 中 InRequestScope 的默认后备是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124916/