Лучший метод с использованием Validator.TryValidateObject (..) со списком - PullRequest
0 голосов
/ 10 января 2019

Моя цель - определить, существует ли лучший метод для использования TryValidateObject (..) со списком. Прямо сейчас я перебираю список элементов и использую метод TryValidateObject (..) для проверки. Предлагает ли класс Validator какие-либо методы для достижения этой цели без перебора каждого элемента?

Для повторного использования я создал служебный класс DataAnnotationsValidator для выполнения функций TryValidateObject.

DataAnnotationsValidator.cs

public class DataAnnotationsValidator
{
    public static bool TryValidate(object @object, out ICollection<ValidationResult> results)
    {
        var context = new ValidationContext(@object, serviceProvider: null, items: null);
        results = new List<ValidationResult>();
        return Validator.TryValidateObject(@object, context, results, validateAllProperties: true);

    }
}

Repository.cs

    public IQueryable<TEntity> GetAll()
    {
        IQueryable<TEntity> list = _db.Set<TEntity>().AsNoTracking();

        foreach (TEntity entity in list)
        {
            if (!DataAnnotationsValidator.TryValidate(entity, out ICollection<ValidationResult> results))
            {
                foreach (ValidationResult item in results)
                {
                    throw new Exception("Error: " + item.MemberNames.FirstOrDefault().ToString() + " - " + item.ErrorMessage);
                }
            }
        }

        return _db.Set<TEntity>().AsNoTracking();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...