Beispiel #1
0
        /// <summary>
        /// Валидирует объект спинабором правил и генерирует исключение,
        /// если результат содержит ошибки
        /// </summary>
        /// <typeparam name="T">Тип объекта валидации</typeparam>
        /// <param name="validator">Валидатор</param>
        /// <param name="ruleSets">Коллекция наборов правил валидации</param>
        /// <param name="instance">Ссылка на объект валидации</param>
        /// <param name="context">Контекст валидации</param>
        public static Task ValidateManyAndThrowAsync <T>(
            this IValidatorAsync validator, IEnumerable <IValidationRuleSet <T> > ruleSets, T instance, ValidationContext context)
        {
            var result = validator.ValidateManyAsync(ruleSets, instance, context);

            return(ThrowIfIsNotValid(result));
        }
        public async Task <ValidationResult> ProcessAsync(T value, ValidationContext context)
        {
            var result = new ValidationResult();
            IEnumerable <TEntity> enumerable;

            lock (_func)
            {
                enumerable = _func.Invoke(value);
            }

            foreach (var res in enumerable.Select(item => _validatorAsync.ValidateManyAsync(_contexts, item, context)))
            {
                var validateResult = await res;
                result.Results.AddRange(validateResult.Results);
            }

            return(result);
        }
Beispiel #3
0
 /// <summary>
 /// Валидирует заданный объект несколькими наборами правил валидации
 /// </summary>
 /// <typeparam name="T">Тип объекта для валидации</typeparam>
 /// <param name="ruleSets">Коллекция наборов правил валидации</param>
 /// <param name="instance">Ссылка на объект валидации</param>
 /// <param name="context">Контекст валидации</param>
 /// <returns>Результат валидации</returns>
 public static Task <ValidationResult> ValidateManyAsync <T>(
     IEnumerable <IValidationRuleSet <T> > ruleSets, T instance, ValidationContext context = null)
 {
     return(validator.ValidateManyAsync(ruleSets, instance, context));
 }