我有一个方法可以通过表达树来构建一个'。'分隔的属性名称字符串
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。
是正确的吗?表达树的所有例子看起来都非常复杂;任何建议赞赏
答案 0 :(得分:0)
使用expression.Compile()
。它为您提供了表示lambda表达式的方法。