Можно ли выполнить автоматическую базовую проверку DataAnnotations с помощью интерфейса IValidatableObject? - PullRequest
1 голос
/ 21 июля 2011

Я использую множество сущностей POCO EF4 с некоторыми значениями DataAnnotations ValidationAttribute по умолчанию (Required, StringLength, RegularExpression и т. Д.) В свойствах (это генерируется некоторыми используемыми нами сценариями T4), и я хочу выполнить индивидуальную проверку сущностей через интерфейс IValidatableObject.

Мой вопрос: Могу ли я вызвать в реализации метода IValidatable.Validate () какой-то базовый метод для проверки всех свойств в ассоциированном атрибуте ValidationAttribute? Написание одного и того же кода для проверки каждого свойства будет стоить очень много времени.

Пример проверки:

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        ICollection<ValidationResult> validationResults = new List<ValidationResult>();

        if (string.IsNullOrEmpty(DatabaseName))
        {
            validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_Required, new string[] { "DatabaseName" }));
        }
        else if (DatabaseName.Length > 50)
        {
            validationResults.Add(new ValidationResult(Messages.Error_OrderedComponentDatabase_DatabaseName_TooLong, new string[] { "DatabaseName" }));
        }

        return validationResults;
    }

Предпочтительная реализация (псевдокод):

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        ICollection<ValidationResult> validationResults = someInstance.ValidateOnDataAnnotations(this);

      // do some extra custom validation...

        return validationResults;
    }

Любое предложение приветствуется! Заранее спасибо.

1 Ответ

1 голос
/ 22 июля 2011

Нашел решение. Я сделал запрос linq на основе следующего поста: Проверка DataAnnotations из класса .

Ответ на вопрос.

...