C# 使用DataAnnotation验证类

C# 使用DataAnnotation验证类,c#,.net,data-annotations,C#,.net,Data Annotations,我有一个类,我正在使用它在MVC中为数据建模。我添加了一些DataAnotation来标记必填字段,并使用正则表达式检查有效的电子邮件地址。如果对象被发回MVC,并且我有ModelState属性,我可以检查该属性以确认该类是否有效,但是如何检查该类是否在MVC之外有效,并使用我已经设置的相同类和数据说明?这里有一个我过去在数据说明中使用的方法要获取注释对象上的所有错误(可能需要一些改进,但这是一个很好的起点): public static IEnumerable<ErrorInfo>

我有一个类,我正在使用它在MVC中为数据建模。我添加了一些DataAnotation来标记必填字段,并使用正则表达式检查有效的电子邮件地址。如果对象被发回MVC,并且我有ModelState属性,我可以检查该属性以确认该类是否有效,但是如何检查该类是否在MVC之外有效,并使用我已经设置的相同类和数据说明?

这里有一个我过去在数据说明中使用的方法要获取注释对象上的所有错误(可能需要一些改进,但这是一个很好的起点):

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);    
}
公共静态IEnumerable GetErrors(对象实例)
{
从TypeDescriptor.GetProperties(instance.Cast()中的prop返回
来自类型()的prop.Attributes.of中的属性
其中!attribute.IsValid(prop.GetValue(实例))
选择新的ErrorInfo(prop.Name,attribute.FormatErrorMessage(String.Empty),instance);
}

在.NET 3.5中似乎没有内置任何内容。但是,如果您可以针对.NET 4进行开发,则有一个验证程序类可以提供您所需的内容: