Ответ 1
Один из подходов:
public class Base
{
public string BaseName { get; set; }
}
public class Derived1 : Base
{
public string Derived1Name { get; set; }
}
public class BaseValidator<T> : AbstractValidator<T> where T : Base
{
public BaseValidator()
{
RuleFor(b => b.BaseName).NotNull();
}
}
public class Derived1Validator : BaseValidator<Derived1>
{
public Derived1Validator()
{
RuleFor(d => d.Derived1Name).NotNull();
}
}
Итак, сначала создайте свой валидатор базы, чтобы он принял аргумент общего типа и укажите, что общий тип должен иметь тип base
. Настройте свои общие правила для базового класса и продолжайте.
Для любых валидаторов, которые проверяют дочерние элементы вашего базового класса, у вас есть эти валидаторы, наследуемые от baseValidator, где T будет вашим производным типом класса.