7

結果のIEnumerableofTを取得できるように、入力したISearchableインターフェイスを作成しました。

さまざまなドメインオブジェクトに対してISearchableを実装するサービスがいくつかあります...

Container.RegisterType<ISearchable<Animal>, AnimalService>();
Container.RegisterType<ISearchable<Fish>, FishService>();

タイプに基づいてISearchableを(Unityを介して)解決したいのですが、それを機能させるのに苦労しています...

以下はコンパイルされませんが、うまくいけば、私が達成しようとしていることのアイデアを与えるでしょう。

Type t = typeof(Animal);
var searchProvider = _container.Resolve<ISearchable<t>>();

ありがたいことに助けてくれました!

ありがとう、

アンディ

4

3 に答える 3

12

最後にそれを並べ替えました。うまくいけば、他の誰かの助けになるでしょう!

var type = filter.GetType();
var genericType = typeof(ISearchable<>).MakeGenericType(type);
var searchProvider = _unityContainer.Resolve(genericType);
于 2009-07-15T08:18:37.427 に答える
2

タイプを名前で登録し、その方法で解決してみませんか?

Container.RegisterType<ITelescopeView, TelescopeView>("type1");
Container.RegisterType<ITelescopeView, TelescopeView2>("type2");

Container.Resolve(ITelescopeView, "type1");

必要に応じて、名前を型の完全な名前にするか、別の名前を使用できます。Dmitri のアプローチも有効です。しかし、これによりコードがより明確になる可能性があります。

于 2009-07-13T16:21:23.257 に答える