2016-10-17 4 views
0

oという変数(型:object)があります。私はtと呼ばれる変数(タイプ:Type)も持っています。私はoがEntitySetで、タイプがtで、その中に1つのエントリがあることを知っています。変数を汎用変数にしてオブジェクトをEntitySetにキャストする方法

EntitySetの最初の要素を取得して、プロパティを取得するためにリフレクションを使用できるようにする必要があります。最初の要素を取得するためにいくつかのアプローチを試しましたが、うまくいきませんでした。

  1. のEntitySetにOキャスト - 良い音が、tはのEntitySetにoをキャスト
  2. ダイナミック
  3. にoを
  4. キャストを変更することができ、可変であることでこれを行う方法を知らない - 意図はその後、私ができることですEntitySetのメソッドを使用し、最初のオブジェクトを取得しますが、それは例外

を持ってスロー:

Type t;  
object o; // we know it's EntitySet<t> 

を私はIEnumerable<T>が共変であるので、あなたはIEnumerable<object>にキャストすることができるはず

t firstElement = o[0]; 
+0

これよりも多くのコンテキストを提供する必要があります。実際に何を達成しようとしているのか、その理由は不明です。 –

+0

@DavidL不明な点は何ですか?私は再読して、不明確なものがわからない。 – ism

+1

オブジェクトをIListにキャストしようとしましたか? – thehennyy

答えて

0

を必要としています。 IListは動作しません。

Type t;  
object o; 
var objList = (IEnumerable<object>)o; 
var firstObject = objList.First(); 
//Do your reflection magic with firstObject 
+1

ここでは一般的でないIListには問題がありません。 – thehennyy

+0

あなたは正しいです。 IListも同様に動作します。 IList は動作しません。 – fhogberg

関連する問題