Я использую множество сущностей 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;
}
Любое предложение приветствуется! Заранее спасибо.