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

nwa*_*aet 7 c# ninject ioc-container

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

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

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

Ian*_*vis 8

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