/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses all <see cref="TValidator"/> to resolve <see cref="InputValidator"/> with <see cref="ValidationStrategy{T}"/> /// </summary> public static ArgumentValidationBuilder UseValidators <TValidator>( this ArgumentValidationBuilder builder, Action <ValidationStrategy <object> > validationStrategy) where TValidator : class, IValidator { return(builder.UseValidators(typeof(TValidator), validationStrategy)); }
public override void Configure(ArgumentValidationBuilder builder) { var validationStrategy = TryGetValidationStrategy(); if (validationStrategy is null) { builder.UseValidators(ValidatorType); } else { builder.UseValidators(ValidatorType, validationStrategy); } }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses all <see cref="TValidator"/> to resolve <see cref="InputValidator"/>, with custom <see cref="ValidationStrategy{TInput}"/> /// </summary> public static ArgumentValidationBuilder UseValidators <TInput, TValidator>( this ArgumentValidationBuilder builder, Action <ValidationStrategy <TInput> > validationStrategy) where TValidator : class, IValidator <TInput> { return(builder.UseInputValidators(async inputValidatorContext => { var argumentValue = inputValidatorContext .MiddlewareContext .ArgumentValue <TInput>(inputValidatorContext.Argument.Name); if (argumentValue is null) { return null; } var validators = (TValidator[])inputValidatorContext.MiddlewareContext.Services.GetServices <TValidator>(); var validationContext = ValidationContext <TInput> .CreateWithOptions(argumentValue, validationStrategy); ValidationResult?validationResult = null; for (var validatorIndex = 0; validatorIndex < validators.Length; validatorIndex++) { var validator = validators[validatorIndex]; var validatorResult = await validator .ValidateAsync(validationContext, inputValidatorContext.MiddlewareContext.RequestAborted) .ConfigureAwait(false); if (validationResult is null) { validationResult = validatorResult; } else { validationResult.MergeFailures(validatorResult); } } return validationResult; })); }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses type to resolve <see cref="InputValidator"/> /// </summary> public static ArgumentValidationBuilder UseValidators( this ArgumentValidationBuilder builder, Type validatorType) { return(builder.UseInputValidators(async inputValidatorContext => { var argumentValue = inputValidatorContext .MiddlewareContext .ArgumentValue <object?>(inputValidatorContext.Argument.Name); if (argumentValue is null) { return null; } var validators = (IValidator[])inputValidatorContext.MiddlewareContext.Services.GetServices(validatorType); var validationContext = new ValidationContext <object>(argumentValue); ValidationResult?validationResult = null; for (var validatorIndex = 0; validatorIndex < validators.Length; validatorIndex++) { var validator = validators[validatorIndex]; var validatorResult = await validator .ValidateAsync(validationContext, inputValidatorContext.MiddlewareContext.RequestAborted) .ConfigureAwait(false); if (validationResult is null) { validationResult = validatorResult; } else { validationResult.MergeFailures(validatorResult); } } return validationResult; })); }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses type to resolve <see cref="InputValidator"/> /// </summary> public static ArgumentValidationBuilder UseValidator( this ArgumentValidationBuilder builder, Type validatorType) { return(builder.UseInputValidators(inputValidatorContext => { var argumentValue = inputValidatorContext .MiddlewareContext .ArgumentValue <object?>(inputValidatorContext.Argument.Name); if (argumentValue is null) { return Task.FromResult <ValidationResult?>(null); } var validator = (IValidator)inputValidatorContext.MiddlewareContext.Services.GetRequiredService(validatorType); var validationContext = new ValidationContext <object>(argumentValue); return validator.ValidateAsync(validationContext, inputValidatorContext.MiddlewareContext.RequestAborted); })); }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses <see cref="TValidator"/> to resolve <see cref="InputValidator"/>, with custom <see cref="ValidationStrategy{TInput}"/> /// </summary> public static ArgumentValidationBuilder UseValidator <TInput, TValidator>( this ArgumentValidationBuilder builder, Action <ValidationStrategy <TInput> > validationStrategy) where TValidator : class, IValidator <TInput> { return(builder.UseInputValidators(inputValidatorContext => { var argumentValue = inputValidatorContext .MiddlewareContext .ArgumentValue <TInput>(inputValidatorContext.Argument.Name); if (argumentValue is null) { return Task.FromResult <ValidationResult?>(null); } var validator = inputValidatorContext.MiddlewareContext.Services.GetRequiredService <TValidator>(); var validationContext = ValidationContext <TInput> .CreateWithOptions(argumentValue, validationStrategy); return validator.ValidateAsync(validationContext, inputValidatorContext.MiddlewareContext.RequestAborted); })); }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses all <see cref="TValidator"/> to resolve <see cref="InputValidator"/> /// </summary> public static ArgumentValidationBuilder UseValidators <TValidator>(this ArgumentValidationBuilder builder) where TValidator : class, IValidator { return(builder.UseValidators(typeof(TValidator))); }
/// <summary> /// Overrides global <see cref="InputValidator"/>. /// Uses all <see cref="TValidator"/> to resolve <see cref="InputValidator"/> with <see cref="ValidationDefaults.ValidationStrategies.Default{TInput}"/> strategy /// </summary> public static ArgumentValidationBuilder UseValidators <TInput, TValidator>(this ArgumentValidationBuilder builder) where TValidator : class, IValidator <TInput> { return(builder.UseValidators <TInput, TValidator>(ValidationDefaults.ValidationStrategies.Default)); }
public sealed override void Configure(ArgumentValidationBuilder builder) { builder.SkipValidation(SkipValidation); }
public override void Configure(ArgumentValidationBuilder builder) { builder.UseDefaultErrorMapper(); }
public abstract void Configure(ArgumentValidationBuilder builder);
public override void Configure(ArgumentValidationBuilder builder) { builder.UseDefaultErrorMapperWithExtendedDetails(); }
public override void Configure(ArgumentValidationBuilder builder) { builder.UseDefaultInputValidator(); }