1

_kernel という名前の Ninject カーネルがあり、特定のオブジェクト (パラメーターとして受け取った)、たとえば myClass というタイプ IMyClass:IDisposable; があるとします。IMyClass を ToMethod 経由で myClass にバインドすると、次のようになります。

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

その後、_kernel を破棄するたびにmyClass.Dispose()呼び出されなくなります。

ただし、代わりに、ToConstant を介して IMyClass を myClass にバインドすると、次のようになります。

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

その後、myClass.Dispose()_kernel を破棄するときに呼び出されます。

この振る舞いを説明していただけますか?

4

1 に答える 1

3

の標準スコープToConstantSingletonスコープで、ToMethodTransientスコープです。一時スコープのオブジェクトの有効期間は Ninject によって管理されないため、インスタンスはDisposed ではありません。

于 2013-02-27T22:38:02.057 に答える