Изначально я не думал, что это возможно, но оказывается, что это возможно. В конце дня коллекция является контейнером, поэтому вы должны иметь возможность создать для нее валидатор, как и для любого другого контейнера с дочерним списком.
Решение состоит в том, чтобы определить валидатор для коллекции. само по себе:
public class ListOfMyClassValidator : AbstractValidator<List<MyClass>>
{
public ListOfMyClassValidator()
{
RuleFor(x => x).Must(x => x.Any()).WithMessage("The list cannot be empty");
RuleForEach(x => x).SetValidator(new MyClassValidator());
}
}
Я указал здесь RuleForEach
, чтобы каждый элемент списка также проверялся (если у вас есть MyClass
валидатор). Вы можете пропустить эту часть, установив ImplicitlyValidateChildProperties
в значение true при настройке FV, однако первый способ является рекомендуемым.
Я пробовал это с IEnumerable<MyClass>
, однако, который не запускал валидатор. То же самое с IList<MyClass>
. Я не исследовал, почему с точки зрения функциональности связыватель модели является счастливым связыванием с List<T>
.
Рабочим раствором