public ParameterStringParser <T> AddMemberMapping(string memberKey, Expression <Func <T, object> > memberExpression) { Expression expression = memberExpression; if (expression.NodeType == ExpressionType.Lambda) { expression = ((LambdaExpression)expression).Body; } if (expression.NodeType == ExpressionType.MemberAccess) { var memberName = ((MemberExpression)expression).Member.Name; if (MemberMap.ContainsKey(memberKey)) { MemberMap[memberKey] = memberName; } MemberMap.Add(memberKey, memberName); } else if (expression.NodeType == ExpressionType.Convert) { var operand = ((UnaryExpression)expression).Operand; if (operand.NodeType == ExpressionType.MemberAccess) { var memberName = ((MemberExpression)operand).Member.Name; if (MemberMap.ContainsKey(memberKey)) { MemberMap[memberKey] = memberName; } MemberMap.Add(memberKey, memberName); } } else { throw new Exception("Переданное выражение не является 'MemberAccess'"); } return(this); }