3

特定のインターフェースのインスタンスをその名前で解決できる新しい FactoryComponentSelector を作成しました。ここまでは順調ですね。ただし、アプリケーションのビジネス部分の構成に関しては、コンテナーから特定のインターフェイスのすべての名前のリストが必要です。

次の登録があるとします。

container.AddFacility<TypedFactoryFacility>();

container.Register(Component.For<ITypedFactoryComponentSelector>().ImplementedBy<CreateByNameComponentSelector>());
container.Register(Component.For<IProviderFactory>().AsFactory(c => c.SelectedWith<CreateByNameComponentSelector>()));

container.Register(Component.For<IProvider>().ImplementedBy<FirstProvider>().Named("First"));
container.Register(Component.For<IProvider>().ImplementedBy<SecondProvider>().Named("Second"));
container.Register(Component.For<IProvider>().ImplementedBy<ThirdProvider>().Named("Third"));

インターフェイス IProvider を実装するすべての登録済みコンポーネントの名前のリストをコンテナーに要求する方法はありますか?

4

2 に答える 2

8
var handlers = container.Kernel.GetHandlers(typeof(IProvider));

handlers.Select(h=>h.ComponentModel.Name);
于 2012-05-09T23:40:26.510 に答える