5

NInjectを使用してメッセージブローカーを構築しています。コンテナー内で、特定のメッセージタイプを消費できるものとしてクラスをマークするインターフェイスであるConsumesを実装するすべてのインスタンスを見つける必要があります。

このシナリオはサポートされていますか?

4

2 に答える 2

5

ネイトからの回答:

多重解像度(経由GetAll)は現在、多形ではありません。つまり、指定した正確なインターフェイスからのバインディングのみが考慮されます。これを行う場合:

kernel.Bind<IWorker>().To<WorkerA>();
kernel.Bind<IWorker>().To<WorkerB>();
kernel.Bind<IWorker>().To<WorkerC>();

その後:

kernel.GetAll<IWorker>();

3点返品いたします。ただし、、、およびを 実装した場合でもIWorkerA、 Ninjectは、を要求したときにからへのバインディングを調べません 。IWorkerBIWorkerCIWorkerIWorkerAWorkerAIWorker

見る :

http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#

于 2009-09-08T15:48:40.030 に答える
1

Romainの回答で参照されているスレッドで説明されているような多型の状況がない場合は、Ninject 2を使用している限り、問題は発生しません。Ninject1.xにはこの種の問題は含まれていません。サポート。

于 2009-09-08T19:25:33.443 に答える