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

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

4

1 回答 1

0

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

于 2012-07-11T21:01:47.703 回答