public IEnumerable <ICoconaParameterValidator> CreateValidators(ICommandParameterDescriptor parameter) { return(parameter .ParameterAttributes .OfType <ValidationAttribute>() .Select(x => new DataAnnotationsParameterValidator(x))); }
public IEnumerable <ICoconaParameterValidator> CreateValidators(ICommandParameterDescriptor parameter) { foreach (var attr in parameter.ParameterAttributes) { if (attr is ValidationAttribute validationAttr) { yield return(new DataAnnotationsParameterValidator(validationAttr)); } } }
private object?Validate(ICommandParameterDescriptor commandParameter, object?value) { var ctx = new CoconaParameterValidationContext(commandParameter, value); foreach (var validator in _validatorProvider.CreateValidators(commandParameter)) { var validationFailed = validator.Validate(ctx).FirstOrDefault(); if (validationFailed != null) { throw new ParameterBinderException(ParameterBinderResult.ValidationFailed, validationFailed.Message); } } return(value); }
public CoconaParameterValidationContext(ICommandParameterDescriptor parameter, object?value) { Parameter = parameter ?? throw new ArgumentNullException(nameof(parameter)); Value = value; }