如何创建一个子对象的Expression.Property

10

通常我会以这种方式创建一个表达式。

ParameterExpression pe = Expression.Parameter(typeof(object1), "x");

string Name = "property1";

MemberExpression left = Expression.Property(pe, (object1).GetProperty(Name));

它产生 left = x => x.property1

我需要知道如何生成

left = x => x.Object2.property1

如果名称为 "Object2.property1",且 object2 是 object1 的子级

提前致谢

1个回答

38

我不太明白你想要什么。是属性链吗(比如:x.Prop1.Prop2)?

var pe = Expression.Parameter(typeof(object1));
var property1 = typeof(object1).GetProperty(Name1);
var property2 = property1.PropertyType.GetProperty(Name2);
var inner = Expression.Property(pe, property1);
var outer = Expression.Property(inner, property2);

1
谢谢,这正是我所需要的。我还不能投票,但这就是答案。 - Diana G
你能将自己的问题设为有效答案吗? - Rafal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接