2012-02-22 21 views
0

私は基本クラスといくつかの派生クラスを持っています。これらの派生型をUnityによってIEnumerableコレクションに解決するにはどうすればよいですか?私はUnity:派生型をIEnumerableに解決する方法は?

var myObjectList = (IEnumerable<BaseClass>) UnityContainerFactory.UnityContainer.ResolveAll(typeof(BaseClass)); 

のようななめらかを試みた。しかし、それは私がユニティを使用していないが、あなたは.NET 3.5以上にしていると仮定すると、あなたはLINQを使用してみてくださいInvalidCastExceptionが

答えて

2

あなただけのジェネリックオーバーロードを使用する必要があります。

また
var myObjectList = UnityContainerFactory.UnityContainer 
             .ResolveAll<BaseClass>(); 

Enumerable.Castを使用します。

var myObjectList = UnityContainerFactory.UnityContainer 
             .ResolveAll(typeof(BaseClass)) 
             .Cast<BaseClass>(); 
+0

私は2番目の変種を選択しました。それ以上の例外はありませんが、コンテナはまだ空です。私は次のように型を登録します:container.RegisterType (); container.RegisterType (); – user1178399

+0

編集:無名タイプを登録したので、コンテナが空でした。それにもかかわらず、thnx! – user1178399

1

提起:

var myObjectList = UnityContainerFactory.UnityContainer 
             .ResolveAll(typeof(BaseClass)) 
             .Cast<BaseClass>(); 

(あなたがList<BaseClass>にそれを具現化するためにToList()を呼び出したいことがあります。)

+0

私は鋳造を行うと、1回の呼び出しで一覧表示するに変換するための拡張メソッドを書いた: 'パブリック静的リストに ToCastedList (このIEnumerableをE) { リターンをe.Cast ().ToList(); } ' – brgerner

関連する問題