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