2017-04-06 10 views
0

反射オブジェクトのいくつかのプロパティを循環させるために反射を使用し、オブジェクトを収集する必要があります。PropertyInfoc#PropertyInfo内部式を抽出

これらのプロパティのうちのいくつかはExpression<Func<Type1,string>>であり、プロパティ情報から基本となる式を抽出する必要があります。

私はmyPropertyInfo.GetValue(parParameter) as LambdaExpressionを試しましたが、うまくいかないようです。

誰でも私にいくつかのポインタを教えてもらえますか?

+0

ここでうまく使用することができますか? – Fabjan

+3

これまでのコードを表示して、問題の発生場所を確認しやすくしてください。コンパイル時に 'Type1'と' string'型を知っていますか?私は確信していませんが、 'Expression >'は型の観点から 'LambdaExpresssion'_ではないと思います。その価値観で何をしたいですか? –

答えて

3

myPropertyInfo.GetValue(parParameter) as LambdaExpressionの使用は疑わしいです。パラメータと式は2つの異なるものです。あなたがリフレクションをした後であなたの変数を混ぜているようです。ここでは物事を明確にするのに役立つ例があります:

class Type1 { public string Name { get; set; } } 
class Data { public Expression<Func<Type1, string>> Ex { get; set; } } 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var d = new Data { Ex = t => t.Name }; 
     var pi = d.GetType().GetProperties().Single(); 
     var ex = pi.GetValue(d) as LambdaExpression; 
     Console.WriteLine(pi.GetValue(d).GetType()); 
     Console.WriteLine(ex); 
     Console.WriteLine(ex.Parameters.Single()); 
    } 
} 
関連する問題