通过ToConstant解析时处理对象,但通过ToMethod解析时不处理对象

时间:2013-02-27 20:26:26

标签: c# ninject

假设我有一个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()

你能解释一下这种行为吗?

1 个答案:

答案 0 :(得分:3)

ToConstant的标准范围是 Singleton 范围,ToMethod的标准范围是瞬态范围。临时范围对象的生命周期不受Ninject管理,因此实例不是Dispose d。