2012-07-11 63 views
0

我有一種方法可以遍歷構建'。'的表達式樹。屬性名稱分隔字符串創建表達式樹以獲取屬性值

public static string GetPropertyNameFor<TSource, TProperty>(Expression<Func<TSource, TProperty>> propertyLambda, bool fullyQualified) 
{ 
     // if fullyQualified return Bar.BoolProp1 
     // else return BoolProp1 
} 

用法:

var propName = GetPropertNameFor<Foo, bool>(foo=>foo.Bar.BoolProp1); 

但我現在需要做的是在運行時調用的方法。我有類型和PropertyInfo層次結構。據推測,我需要創建一個覆蓋,作爲另一個參數訪問類型,並創建一個表達式樹來傳遞給properyLambda。

是否正確?表達式樹的所有例子看起來都非常複雜;任何建議讚賞

回答

0

使用expression.Compile()。它爲您提供了表示lambda表達式的方法。

+0

感謝您的回覆,但我已經有方法來獲取字符串表示形式,我想從字符串獲取表達式。 – sambomartin 2012-07-11 21:04:04

+0

@sambomartin哦,對不起!編輯。 – Asti 2012-07-11 21:10:21