对象在通过ToConstant解析时被处置,而在通过tommethod解析时不被处置
本文关键字:tommethod ToConstant 对象 | 更新日期: 2023-09-27 18:01:31
假设我有一个名为_kernel的Ninject内核,一个给定的对象(作为参数接收),例如myClass,类型为IMyClass:IDisposable;我注意到,当我通过tommethod将IMyClass绑定到myClass时,如下所示:
Bind<IMyClass>().ToMethod(x => myClass);
那么,无论何时我释放_kernel, myClass.Dispose()
都不会被调用。
Bind<IMyClass>().ToConstant(myClass);
则在处理_kernel时将调用myClass.Dispose()
。
你们能解释一下这种行为吗?
ToConstant
的标准范围为单例范围,ToMethod
的标准范围为暂态范围。瞬态作用域对象的生存期不是由Ninject管理的,因此实例不是Dispose
d。