/// <inheritdoc /> public async Task <ValidationFailures> GetValidationResultsAsync(object value, ApiOperationContext apiOperationContext) { var results = new ValidationFailures(); PropertyInfo[] propertyInfos = null; foreach (var validationSource in this._validationSources) { if (validationSource is IAttributeValidationSource attributeValidationSource) { if (propertyInfos == null) { propertyInfos = value.GetType().GetProperties(); } foreach (var propertyInfo in propertyInfos) { await attributeValidationSource.AddAttributeValidationResultsAsync(propertyInfo, value, apiOperationContext, results); } } if (validationSource is IClassValidationSource classValidationSource) { await classValidationSource.AddClassValidationResultsAsync(value, apiOperationContext, results); } } return(results); }
public Task AddAttributeValidationResultsAsync(PropertyInfo propertyInfo, object value, ApiOperationContext apiOperationContext, ValidationFailures results) { var validationContext = new ValidationContext(value, null, null); var validationAttributes = propertyInfo.GetAttributes <ValidationAttribute>(true); foreach (var validation in validationAttributes) { var result = validation.GetValidationResult( propertyInfo.GetValue(value, null), GetValidationContext(validationContext, propertyInfo)); if (result != ValidationResult.Success) { results.AddFailure(result); } } return(Task.CompletedTask); }
public async Task AddAttributeValidationResultsAsync(PropertyInfo propertyInfo, object value, ApiOperationContext apiOperationContext, ValidationFailures results) { var attributes = propertyInfo.GetAttributes <BlueprintValidationAttribute>(true); foreach (var attribute in attributes) { var result = await attribute.GetValidationResultAsync(propertyInfo.GetValue(value, null), propertyInfo.Name, apiOperationContext); if (result != ValidationResult.Success) { results.AddFailure(result); } } }
public Task AddClassValidationResultsAsync(object value, ApiOperationContext apiOperationContext, ValidationFailures results) { var validationContext = new ValidationContext(value, null, null); if (value is IValidatableObject validatableObject) { var validationResults = validatableObject.Validate(validationContext); foreach (var validationResult in validationResults) { results.AddFailure(validationResult); } } return(Task.CompletedTask); }