gpt4 book ai didi

c# - 在 Ninject 中跳过处理停用

转载 作者:行者123 更新时间:2023-12-02 05:44:16 24 4
gpt4 key购买 nike

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

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

最佳答案

InTransientScope 添加到您的常量对象。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com