string ExtractExpressionName(ref Expression expr)
{
NamedExpression namedExpr = expr as NamedExpression;
if (namedExpr != null) {
expr = namedExpr.Expression;
return namedExpr.Name;
}
IdentifierExpression identifier = expr as IdentifierExpression;
if (identifier != null) {
return identifier.Identifier;
}
MemberReferenceExpression memberRef = expr as MemberReferenceExpression;
if (memberRef != null) {
return memberRef.MemberName;
}
return null;
}
}