¿Cómo puedo crear una propiedad Expression.Property de un objeto secundario?

c# expression expression-trees func linq

Pregunta

Normalmente creo una expresión de esta manera.

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

string Name = "property1";

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

produce left = x => x.property1

Necesito saber como puedo producir.

left = x => x.Object2.property1

if Name = "Object2.property1"; y object2 es un hijo de object1

Gracias por adelantado

Respuesta popular

No entiendo muy bien lo que quieres. ¿Es una cadena de propiedades (por ejemplo: 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);


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow