1

同じインターフェースを介して 1 対多のバックエンド システムに接続するプロジェクトが近づいています。それを IBacksideProvider と呼びましょう。

Unity を使用して、実行時にこれらのプロバイダーを挿入したいと考えています。問題は、1...n 個のバックエンド システムについて話しているため、IBacksideProvider の 1...n 個の実装を登録する必要があることです。Unity は、そのままではこれをサポートしていません。

ただし、このブログ投稿は、それが可能であることを示唆しています。誰かがこれを行ったことがあるか、またはこれを行うために Unity を操作する方法を考えているかどうか疑問に思っています。ティア。

4

3 に答える 3

2

これが機能しない理由は何ですか? http://msdn.microsoft.com/en-us/library/cc440943.aspx

名前付き登録に基づいてコンテナからオブジェクトインスタンスのリストを取得するには、ResolveAllメソッドを使用して、オブジェクトタイプ(登録タイプ)の値を指定します。ResolveAllメソッドは、デフォルト以外の(名前付き)登録済みタイプのIEnumerableジェネリックリストを返します。このリストをコードで繰り返し処理して、各オブジェクトを調べることができます。

IEnumerable<IMyObject> objects = myContainer.ResolveAll<IMyObject>();
于 2008-12-08T18:44:42.260 に答える
1

Unityは、2008年11月頃にリリースされたバージョン1.2以降でアレイインジェクションをサポートしています。これは、オブジェクトにユニティコンテナを注入することなく、現時点で実行できる最善の方法です。

于 2009-04-06T23:50:07.930 に答える
0

LinFu.IOCは、コンストラクター、プロパティ、メソッド、さらにはフィールドの IEnumerable<T> および IList<T> インジェクションを、すぐに使用できるようにサポートしています。私の知る限り、これはそのブログでリスト インジェクションなどを実際にサポートしている数少ないコンテナーの 1 つです。

于 2008-12-15T05:43:14.300 に答える