何时在Ninject中取消激活瞬态范围对象?

时间:2010-03-12 18:44:03

标签: c# ioc-container ninject

当Ninject中的一个对象与InTransientScope()绑定时,该对象不会被放入缓存中,因为它是,呃,是瞬态的,而不是任何范围。

完成对象后,我可以调用kernel.Release(obj);这会传递到Cache,在那里它会检索缓存的项目并使用缓存的条目调用Pipeline.Deactivate

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

1 个答案:

答案 0 :(得分:8)

您的假设是正确的。在Ninject中不跟踪瞬态对象,而在停用管道中不对其进行控制。您有责任清理瞬态实例。如果您希望内核管理您的实例,则需要使用内置范围或自定义范围。