我有一种方法可以遍历构建“。”的表达式树。属性名称的分隔字符串
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。
那是对的吗?所有表达式树的例子看起来都非常复杂;任何建议表示赞赏