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)); } 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); }