コード例 #1
0
        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);
        }