创建表达式树以获取属性值

时间:2012-07-11 20:51:46

标签: c# linq lambda

我有一个方法可以通过表达树来构建一个'。'分隔的属性名称字符串

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层次结构。据推测,我需要创建一个覆盖,将一个类型作为另一个arg访问,并创建一个表达式树以传递给properyLambda。

是正确的吗?表达树的所有例子看起来都非常复杂;任何建议赞赏

1 个答案:

答案 0 :(得分:0)

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