如何为多级构建表达式树 property/child 属性

how to build expression tree for multilevel property/child property

我有以下定义对象遍历的字符串表达式 "e.B.num"。其中 e 在我的字符串表达式中定义了根实体

 class BTest
 {      
    public int num{get:set;}
 }

 class Test
 {
     public int sample {get; set;}
     public BTest B {get; set;} 
 }

 static void TestProperty()
 {
    Test obj = new Test();
    obj.sample = 40;
    obj.B = new BTest(){ num=5}

    Expression propertyExpr = Expression.Property(Expression.Constant(obj),"num");

    Console.WriteLine(Expression.Lambda<Func<int>>(propertyExpr).Compile()());

}

在下面的语句中 Expression.Property(Expression.Constant(obj),"num");我能够获得第一级的价值 属性 "sample" 但不能获得第二级的价值 属性?

我是不是漏掉了什么?我正在尝试基于 "num" 属性 值构建二进制表达式 post。

您必须创建嵌套的 属性 表达式,因为您正在寻找嵌套的 属性。

Expression bExpression = Expression.Property(Expression.Constant(obj), "B");
Expression numExpression = Expression.Property(bExpression, "num");

Console.WriteLine(Expression.Lambda<Func<int>>(numExpression).Compile()());//Prints 5