Учитывая
Expression<Func<T, object>>
(например, x = > x.Prop1.SubProp), я хочу создать строку "Prop1.SubProp" настолько, насколько это необходимо.
В случае единого доступа (например, x = > x.Prop1) я могу легко сделать это с помощью
MemberExpression body = (expression.Body.NodeType == ExpressionType.Convert) ? (MemberExpression)((UnaryExpression)expression.Body).Operand : (MemberExpression)expression.Body;
return body.Member.Name;
Однако, если есть более глубокое вложение, например. x = > x.Prop1.SubProp1, это получает только самое глубоко вложенное имя, например. "SubProp1" вместо "Prop1.SubProp1"
Есть ли вообще доступ к полному пути свойств выражения лямбда?