NInjectを使用してメッセージブローカーを構築しています。コンテナー内で、特定のメッセージタイプを消費できるものとしてクラスをマークするインターフェイスであるConsumesを実装するすべてのインスタンスを見つける必要があります。
このシナリオはサポートされていますか?
NInjectを使用してメッセージブローカーを構築しています。コンテナー内で、特定のメッセージタイプを消費できるものとしてクラスをマークするインターフェイスであるConsumesを実装するすべてのインスタンスを見つける必要があります。
このシナリオはサポートされていますか?
ネイトからの回答:
多重解像度(経由
GetAll
)は現在、多形ではありません。つまり、指定した正確なインターフェイスからのバインディングのみが考慮されます。これを行う場合:kernel.Bind<IWorker>().To<WorkerA>(); kernel.Bind<IWorker>().To<WorkerB>(); kernel.Bind<IWorker>().To<WorkerC>();
その後:
kernel.GetAll<IWorker>();
3点返品いたします。ただし、、、およびを 実装した場合でも
IWorkerA
、 Ninjectは、を要求したときにからへのバインディングを調べません 。IWorkerB
IWorkerC
IWorker
IWorkerA
WorkerA
IWorker
見る :
http://groups.google.com/group/ninject/browse_thread/thread/7b6afa06099bc97a#
Romainの回答で参照されているスレッドで説明されているような多型の状況がない場合は、Ninject 2を使用している限り、問題は発生しません。Ninject1.xにはこの種の問題は含まれていません。サポート。