Проверка класса с использованием DataAnotations - PullRequest
3 голосов
/ 04 декабря 2009

У меня есть класс, который я использую для моделирования моих данных в MVC. Я добавил некоторые DataAnotations для пометки полей, которые требуются, и я использую регулярные выражения для проверки действительных адресов электронной почты. Все работает нормально, если объект отправлен обратно в MVC, и у меня есть свойство ModelState, которое я могу проверить, чтобы подтвердить, что класс действителен, но как проверить, является ли класс допустимым вне MVC, используя тот же класс и аннотации данных что я уже настроил?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Вот метод, который я использовал в прошлом с аннотациями данных, чтобы получить все ошибки в аннотированном объекте (он может использовать некоторые улучшения, но это хорошая отправная точка:

public static IEnumerable<ErrorInfo> GetErrors(object instance)    
{
   return from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>() 
      from attribute in prop.Attributes.OfType<ValidationAttribute>()
      where !attribute.IsValid(prop.GetValue(instance))
      select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(String.Empty), instance);    
}
0 голосов
/ 25 марта 2010

Похоже, в .NET 3.5 ничего не встроено. Если вы можете разрабатывать против .NET 4, есть класс Validator, который предоставляет то, что вам нужно:

Класс валидатора на MSDN

...