1

私は次のようないくつかの登録されたインスタンスを持つコンテナを持っています:

container.RegisterInstance(typeof(Interface1), "Mapping1", new Class1("1"))
         .RegisterInstance(typeof(Interface1), "Mapping1", new Class1("2"))
         .RegisterInstance(typeof(Interface1), "Mapping2", new Class1("3"))
         .RegisterInstance(typeof(Interface1), "Mapping2", new Class1("4"));

Interface1では、「Mapping1」などの名前のタイプのすべてのインスタンスを取得するにはどうすればよいですか?コードの呼び出しは次のようになります。

var instances = container.ResolveAll<Interface1>("Mapping1");

答えてくれてありがとう。

4

4 に答える 4

4

同じ名前とタイプの組み合わせで複数の登録を行うことはできません。新しい登録ごとに、以前の登録が上書きされます。

于 2012-10-05T12:50:22.547 に答える
3

このようにインスタンスを登録しても、希望する結果が得られるかどうかはわかりません。 RegisterInstanceはオブジェクトをシングルトンとして登録するため、定義上、同じ名前のシングルトンを複数持つことはできません。上記の例から、container.ResolveAll()は 2 つのインスタンスのみを返します。

于 2012-10-05T13:12:14.437 に答える
0

これを処理する拡張メソッドを作成できます。この投稿を見てください。それは私を助け、あなたの質問に答えると思います: Unity - ResolveAll by name with condition

于 2012-10-05T12:39:38.000 に答える