Автоматическая проверка собственных свойств объекта IValidatableObject в C # .Net Core 2.1 - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть класс Dad и класс Kid, оба реализовали интерфейс IValidatableObject.

Я ищу способ автоматически отлавливать ошибки валидации Kid при использовании валидатораПапа.

public class Dad : IValidatableObject
{
    public long Id { get; set; }
    [Required]
    public Kid Kid { get; set; }
    public int Height { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Height <= 190)
            yield return new ValidationResult("Adults need to be taller than 190cm.")
    }
}

public class Kid : IValidatableObject
{
    public long Id { get; set; }
    public int Height { get; set; } = 180;

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Height <= 170)
            yield return new ValidationResult("Kids need to be taller than 170cm.")
    }
}

Контроллер:

var dad= _context.Dads.Find(100);
dad.Height = 100;
dad.Kid.Height = 100;

List<ValidationResult> Errors = new List<ValidationResult>();
    bool IsValid = Validator.TryValidateObject(dad, new ValidationContext(dad, serviceProvider: null, items: null), Errors);

// Errors will not contain the Kids' height validation result...
...