2015-10-10 2 views
5

から式を作成し、私はExpression<Func<T, object>>を期待するAPIを使用して、異なるオブジェクト間のマッピングを作成するためにこれを使用しています:PropertyInfo

Map(x => x.Id).To("Id__c"); // The expression is "x => x.Id" 

にはどうすればPropertyInfoから必要な式を作成することができますか?アイデアビーイング:

var properties = typeof(T).GetProperties(); 

foreach (var propInfo in properties) 
{ 
    var exp = // How to create expression "x => x.Id" ??? 

    Map(exp).To(name); 
} 

答えて

7

あなただけExpression.Propertyを必要として、ラムダでそれをラップします。一つのトリッキーなビットは、あなたも、objectに結果を変換する必要があるということです。

var parameter = Expression.Parameter(x); 
var property = Expression.Property(parameter, propInfo); 
var conversion = Expression.Convert(property, typeof(object)); 
var lambda = Expression.Lambda<Func<T, object>>(conversion, parameter); 
Map(lambda).To(name); 
+0

おかげで、私はそれを必要な正確に何をしました。 – Didaxis

+0

実際には "var property = Expression.Property(parameter、propInfo);" –

+0

@TamasIonut:固定、ありがとう。 –

関連する問題