2016-07-05 6 views
2

UnaryExpression "Member name" を使用せずに "直接"反射を使用してオブジェクトプロパティ値を取得するにはどうすればよいですか?UnaryExpressionによるオブジェクトプロパティ値へのアクセス

public object DoSomething<T>(UnaryExpression uExp, T obj) 
    {    
     object res = null;      
     // NOTE: UnaryExpression contains a property from T type. 
     // TODO: get UnaryExpressionMatchingProperty value 

     // res = obj.UnaryExpressionMatchingProperty; 
     return res; 
    } 
+0

MemberExpression'としてuExp.Operandをした後、メンバーの詳細情報を取得しますか? – Jim

答えて

0

これは予想通り単項表現の構造がない場合は、値またはnullを生成する必要があります: `

var prop = ((uExp.Operand as MemberExpression)?.Member as PropertyInfo); 
if (prop?.CanRead == true) { // Needs "== true" because ?. makes Nullable<bool> 
    res = prop.GetValue(obj); 
} 
関連する問題