1

假设我有一个名为 _kernel 的 Ninject 内核,一个给定的对象(作为参数接收),比如 myClass,类型为 IMyClass:IDisposable; 我注意到当我通过 ToMethod 将 IMyClass 绑定到 myClass 时,如下所示:

Bind<IMyClass>().ToMethod(x => myClass);

然后,每当我处理 _kernel 时,myClass.Dispose()都不会被调用。

但是,如果我改为通过 ToConstant 将 IMyClass 绑定到 myClass,如下所示:

Bind<IMyClass>().ToConstant(myClass);

thenmyClass.Dispose()将在处理 _kernel 时调用。

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

4

1 回答 1

3

的标准作用域ToConstant单例作用域,而 ofToMethod瞬态作用域。瞬态范围对象的生命周期不由 Ninject 管理,因此实例不是Disposed。

于 2013-02-27T22:38:02.057 回答