このコードを検討してください
var container = new Container();
var nested = container.GetNestedContainer();
var f1 = nested.GetInstance<Foo>();
var f2 = nested.GetInstance<Foo>();
var result = f1 == f2; //I want result to be false
注入できる各具体的なタイプを登録したくありませんが、コンストラクターの注入または呼び出しごとにすべてを一意にしたいGetInstance
アップデート:
うーん、私は NestedContainers を間違って使用しているに違いありませんか? 私がやりたいことは、プログラムのサブ部分の「サブ」コンテナを作成することです(WPFクライアントなので、サブ部分はポップアップなどのサブモデルになる可能性があります)。サブモデルは、独自のサブモデルまたはサービスを持つことができます。これらは、Concrete で登録されていないか、または登録されているインターフェイスのいずれかです。まったく登録したくない具体的な型。そして、Structuremap が AlwaysUnique と呼ぶインターフェイスをデフォルトにしたいのですが、私の世界では、それが一時的な寿命です。私のタイプの 99.9% については AlwaysUnique が必要で、0.01% は入れ子になったコンテナの存続期間中に同じ参照が必要です。このユースケースは、ネストされたコンテナでは正しくないのでしょうか?
編集:これの典型的なユースケースは、ポップアップモデルとその子のようなプログラムの一部のみのイベント集約です