假设我有一个Ninject内核,名为_kernel,一个给定的对象(作为参数接收),比如myClass,类型为IMyClass:IDisposable;我注意到当我通过ToMethod将IMyClass绑定到myClass时,就像这样:
Bind<IMyClass>().ToMethod(x => myClass);
然后,每当我处理_kernel时,都不会调用myClass.Dispose()
。
但是,如果我通过ToConstant将IMyClass绑定到myClass,就像这样:
Bind<IMyClass>().ToConstant(myClass);
然后在处理_kernel时调用myClass.Dispose()
。
你能解释一下这种行为吗?
答案 0 :(得分:3)
ToConstant
的标准范围是 Singleton 范围,ToMethod
的标准范围是瞬态范围。临时范围对象的生命周期不受Ninject管理,因此实例不是Dispose
d。