【问题标题】:When is a Transient-scope object Deactivated in Ninject?Ninject 中的瞬态作用域对象何时停用?
【发布时间】:2011-01-26 23:00:26
【问题描述】:

当 Ninject 中的对象与 InTransientScope() 绑定时,该对象不会被放入缓存中,因为它是,呃,瞬态的,并且没有作用域。

对象完成后,我可以调用kernel.Release(obj);这将传递到缓存,在其中检索缓存项目并使用缓存条目调用Pipeline.Deactivate

但由于没有缓存瞬态对象,因此不会发生这种情况。我无法弄清楚在哪里(或谁)执行瞬态对象的停用。还是假设瞬态对象只会被激活,并且如果我想要一个可停用的对象,我需要使用其他范围?

【问题讨论】:

    标签: c# ioc-container ninject


    【解决方案1】:

    你的假设是正确的。瞬态对象在 Ninject 中不被跟踪,并且在停用管道中不受控制。清理瞬态实例是您的责任。如果您希望内核管理您的实例,那么您需要使用内置范围或自定义范围。

    【讨论】:

    • 谢谢。 “有趣”的事情是它们被激活得很好,所以我脑子里有一个不匹配的东西(激活的东西应该被停用)。
    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2019-06-28
    • 2021-01-14
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    相关资源
    最近更新 更多