/// <inheritdoc/> public async Task <IQueryableValidationResult <TValidated> > ValidateAsync(TValidated validatedObject, ValidationOptions options = null, CancellationToken cancellationToken = default) { var result = await wrapped.ValidateAsync(validatedObject, options, cancellationToken).ConfigureAwait(false); ThrowForUnsuccessfulValidationIfApplicable(result, optionsResolver.GetResolvedValidationOptions(options)); return(result); }
/// <inheritdoc/> public async Task <IQueryableValidationResult <TValidated> > ValidateAsync(TValidated validatedObject, ValidationOptions options = null, CancellationToken cancellationToken = default) { var resolvedOptions = optionsResolver.GetResolvedValidationOptions(options); var rules = ruleFactory.GetRulesWithDependencies(manifest.RootValue, validatedObject, resolvedOptions); var executor = await executorFactory.GetRuleExecutorAsync(resolvedOptions, cancellationToken).ConfigureAwait(false); var context = contextFactory.GetExecutionContext(rules, resolvedOptions); var ruleResults = await executor.ExecuteAllRulesAsync(context, cancellationToken).ConfigureAwait(false); return(new ValidationResult <TValidated>(ruleResults, manifest)); }