Example #1
0
        public virtual IArgumentConstraint GetArgumentConstraint(ParsedArgumentExpression argument)
        {
            if (IsParamArrayExpression(argument))
            {
                return(this.CreateParamArrayConstraint((NewArrayExpression)argument.Expression));
            }

            var isByRefArgument = IsByRefArgument(argument);

            object argumentValue;
            var    constraint = this.GetArgumentConstraintFromExpression(argument.Expression, out argumentValue);

            if (isByRefArgument)
            {
                if (IsOutArgument(argument))
                {
                    constraint = new OutArgumentConstraint(argumentValue);
                }
                else
                {
                    constraint = new RefArgumentConstraint(constraint, argumentValue);
                }
            }

            return(constraint);
        }
        public virtual IArgumentConstraint GetArgumentConstraint(ParsedArgumentExpression argument)
        {
            var parameterType = argument.ArgumentInformation.ParameterType;

            if (IsParamArrayExpression(argument))
            {
                return(this.CreateParamArrayConstraint((NewArrayExpression)argument.Expression, parameterType));
            }

            var isOutOrRefArgument = argument.ArgumentInformation.IsOutOrRef();

            var constraint = this.GetArgumentConstraintFromExpression(argument.Expression, parameterType, out var argumentValue);

            if (isOutOrRefArgument)
            {
                if (IsOutArgument(argument))
                {
                    constraint = new OutArgumentConstraint(argumentValue);
                }
                else
                {
                    constraint = new RefArgumentConstraint(constraint, argumentValue);
                }
            }

            return(constraint);
        }
        public virtual IArgumentConstraint GetArgumentConstraint(ParsedArgumentExpression argument)
        {
            if (IsParamArrayExpression(argument))
            {
                return(this.CreateParamArrayConstraint((NewArrayExpression)argument.Expression));
            }

            if (IsOutArgument(argument))
            {
                return(new OutArgumentConstraint(argument.Value));
            }

            var constraint = this.GetArgumentConstraintFromExpression(argument.Expression);

            if (IsRefArgument(argument))
            {
                constraint = new RefArgumentConstraint(constraint, argument.Value);
            }

            return(constraint);
        }