我刚刚开始在一个(大型)项目中使用 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/