2012-01-31 6 views
16

ImがPropertyInfo[]から値を取得しようとしなさい、私はそれが仕事を得るカント:propertyinfo値

foreach (var propertyInfo in foo.GetType().GetProperties()) 
{ 
     var value = propertyInfo.GetValue(this, null); 
} 

は例外:そのが行われることになってどのようにこのイマイチObject does not match target type.

+0

'this'と' foo'のタイプは何ですか? – BNL

+0

'this'は' propertyInfo'で表されるプロパティを含んでいますか? –

答えて

29

最初にPropertyInfofoo.GetType()から取得したときに、thisからプロパティを取得しようとしています。これは、より適切である:あなたが効果的にthisfooと同じタイプではありませんので、あなたはその例外を取得しているなど

+1

@Johan:いいえ、それはあなたが文脈中にあるどんなオブジェクトでも、普通と同じです... 'propertyInfo'はループ内のそれぞれの' propertyInfo'を参照します。 –

7

foo.SomePropertyを取得したいと仮定しています

var value = propertyInfo.GetValue(foo, null); 

値を取得しようとしている同じオブジェクトのプロパティを取得していることを確認する必要があります。私はあなたが、これが(全く当てはまらない)、ループの範囲内のfooということを期待しているあなたのコードから推測しているので、あなたがに問題のある行を変更する必要があります。

var value = propertyInfo.GetValue(foo, null); 
4

あなたはfooの型で宣言されたプロパティを処理していますが、明らかに同じ型ではないthisからそれらの値を読み込もうとします。

関連する問題