1

Ninject はActivationCacheStrategy、オブジェクトをハッシュ マップに格納するだけの戦略を使用します。これは、オブジェクトの GetHashCode メソッドが利用可能でなければならないことを意味します。次のような状況があります。

var something = kernel.Get<ISomething>();
something.Load() { 

次のようなことを行います:

var objectA = kernel.Get<IFoobar>();
objectA.Init(...);

var objectB = kernel.Get<IFoobar>();
objectB.Init(...)

問題は、Init が呼び出されるまで objectA の GetHashCode を使用できないことです。Ninject は、オブジェクトが完全にアクティブ化される前に GetHashCode が利用可能であると想定しているようです。

私の質問は、この動作が意図されているかどうかです。もしそうなら、これに対する意図された解決策は何ですか。もちろん、カーネルにある種の非キャッシュ アクティベーション キャッシュを追加することもできます (デフォルトを削除します) が、これは間違っているように感じます。

4

0 に答える 0