Я использую DataAnnotations в проекте, который является чистым приложением C#, как лучше всего проверить мои модели/документы на соответствие атрибутам DataAnnotations?
Проверка DataAnnotations из класса
Ответы (2)
Теперь это встроено в С# 4
var result = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(Vehicle, new ValidationContext(Vehicle, null, null), result);
Это также даст вам подробную информацию о проверке.
person
Nate Zaugg
schedule
22.08.2011
Не от меня, а от моего друга Стива Сандерсона:
internal static class DataAnnotationsValidationRunner
{
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);
}
}
Вам может потребоваться улучшить это, например, если вы хотите, чтобы [DataType(DataType.EmailAddress)] действительно проверял адреса электронной почты, или если вы хотите поддерживать атрибут [MetadataType].
person
Coppermill
schedule
07.05.2010
Это сработало для меня для всех атрибутов, кроме DataType. например
[DataType(DataType.EmailAddress)] public object DataTypeTest { get; set; }
есть идеи, почему?
- person Rob McCabe; 15.01.2020