c# - 在 Ninject 中停用时跳过 Dispose

标签 c# ninject ninject-2

我刚刚开始在一个(大型)项目中使用 Ninject,并且只在其中的一部分中使用 DI 来开始。我有一个广泛使用构造函数注入(inject)来组织的子系统。使用 Ninject 注入(inject)该子系统中类之间的所有依赖关系效果很好。然而,我对子系统之外的东西有依赖,我真的很想使用 Ninject 来自动注入(inject),但不负责它们的生命周期。

我以为Bind<T>.ToConstant(...)会为我想做的事情工作。例如,我可能有一个 Monkey 类型的类,它充当 Singleton,但我的应用程序的另一部分是在没有 Ninject 的情况下处理其生命周期(例如,手动创建并处置它)。创建配备 Ninject 的子系统后,我会实例化一个内核,绑定(bind)我的子系统类,然后使用类似 Bind<Monkey>.ToConstant(Monkey.Instance) 的内容。绑定(bind)到各种“外部”依赖项。这在激活时效果很好,但在我处置内核时无法按需要工作。我的子系统的生命周期可能比这些外部依赖项更短,但是当我在内核上调用 Dispose 时,所有这些依赖项都会被释放,这不是我想要的。虽然我可以看到两种方式的争论,但 Ninject 会自动处理它没有创建的对象似乎有点值得怀疑。我希望至少有一种方法可以选择退出这种行为,但到目前为止我还没有找到任何东西。有支持吗?

最佳答案

InTransientScope 添加到常量对象。

关于c# - 在 Ninject 中停用时跳过 Dispose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501255/

相关文章:

dependency-injection - 如何在 Ninject 2 中使用公共(public)服务定位器

c#-4.0 - 忍者注入(inject) : Binding an interface with a generic that is also an interface

asp.net-mvc - Ninject 如何在 ASP.NET MVC 中创建 Controller ?

c# - 如何限制 protected 成员只能从第一级子 C# 访问

Web 托管服务的 C# 支持

c# - Parallel.ForEach 是否使用 ASP.NET 线程池中的线程?

c# - 忍者。将所有接口(interface)绑定(bind)到单例范围内的同一个类

c# - SSIS使用脚本任务重命名目录中的文件

scope - 无法弄清楚为什么 Ninject 命名范围没有按预期工作

Ninject 不在 WCF 中使用构造函数参数创建新实例