2

私は、以前にプロジェクトで使用されていたDI/IOCコンテナーの概念に比較的精通しています。ただし、この新しいプロジェクトでは、既存のフレームワークがないため、フレームワークを選択する必要があります。

簡単に言うと、特定のインターフェイスに対していくつかの実装を構成するシナリオがいくつかあります。Webを一瞥すると、主流のフレームワークのいずれかを使用して、実装の1つに選択的にバインドするのは非常に簡単なようです。

ただし、構成されたすべての実装を実行する必要があるコンテキストがあります。私はここですべてのIOCタグ付き投稿を精査し、主要なフレームワークのドキュメント(これまでのところ、Unity、Ninject、およびWindsorを調べています)を調べようとしていますが、ドキュメントはまばらであることが多く、調査する時間がありません。すべてのパッケージのソース。

それで、私のサービスの1つに対して構成されたすべての具象タイプにバインドできるようにする主流のIOCコンテナーはありますか?

4

2 に答える 2

3

登録済みの型のすべての実装を解決しようとしたときに初めて気付いたのは、ResolveAll() を呼び出したときに、名前のない (既定の) 型の登録が返されないことでした。名前付きインスタンスのみが返されます。

そう:

IUnityContainer container = new UnityContainer();
container.RegisterType<IMyInterface, MyFirstClass>();
container.RegisterType<IMyInterface, MySecondClass>("Two");
container.RegisterType<IMyInterface, MyThirdClass>("Three");

var instances = container.ResolveAll<IMyInterface>();

Assert.AreEqual(2, instances.Count, "MyFirstClass doesn't get constructed");
于 2008-11-25T04:03:11.310 に答える
0

そのため、どういうわけかUnityを調べる最初のパスを見逃しました...しかし、私は自分の質問に答えます。

Unity はまさに私が求めていたものを備えています。 http://msdn.microsoft.com/en-us/library/cc440943.aspx

また、私のように IOC のハンティング アンド ダンスを行っている他の人にとって、このリンクは非常に貴重であることがわかりました。 http://blog.ashmind.com/index.php/2008/09/08/comparing-net-di-ioc-frameworks-part-2/

于 2008-11-25T00:56:32.170 に答える