Exemplo n.º 1
0
        private MemberBinding GetMemberBinding(MemberBindingDto obj)
        {
            if (this.memberBindings.ContainsKey(obj))
            {
                return(this.memberBindings[obj]);
            }

            MemberBinding res = null;
            var           memberAssignmentDto = obj as MemberAssignmentDto;

            if (memberAssignmentDto != null)
            {
                res = Expression.Bind(memberAssignmentDto.Member, Visit(memberAssignmentDto.Expression));
            }
            var memberListBindingDto = obj as MemberListBindingDto;

            if (memberListBindingDto != null)
            {
                res = Expression.ListBind(memberListBindingDto.Member, ListSelect(memberListBindingDto.Initializers, GetElementInit));
            }

            if (res == null)
            {
                throw new InvalidOperationException();
            }

            this.memberBindings.Add(obj, res);
            return(res);
        }
        private MemberBindingDto GetMemberBinding(MemberBinding obj)
        {
            if (this.memberBindings.ContainsKey(obj))
            {
                return(this.memberBindings[obj]);
            }
            MemberBindingDto result = null;
            var memberAssignment    = obj as MemberAssignment;

            if (memberAssignment != null)
            {
                result = new MemberAssignmentDto
                {
                    BindingType = memberAssignment.BindingType,
                    Member      = memberAssignment.Member,
                    Expression  = Visit(memberAssignment.Expression)
                }
            }
            ;
            var memberListBinding = obj as MemberListBinding;

            if (memberListBinding != null)
            {
                result = new MemberListBindingDto
                {
                    BindingType  = memberListBinding.BindingType,
                    Member       = memberListBinding.Member,
                    Initializers = ListSelect(memberListBinding.Initializers, GetElementInit)
                }
            }
            ;
            if (result == null)
            {
                throw new InvalidOperationException();
            }
            this.memberBindings.Add(obj, result);
            return(result);
        }