.NET 4 和Silverlight 中可以使用以下方法:

public static void Validate(this Entity entity)
{
    // prepare the result
    var validationResults = new List<ValidationResult>();
    // create a validation context
    var validationContext = new ValidationContext(entity, null, null);
    // validate
    Validator.TryValidateObject(entity, validationContext, validationResults);
    // reset the validation errors of the entity
    entity.ValidationErrors.Clear();
    foreach (var error in validationResults)
        entity.ValidationErrors.Add(error);
}

.NET 3.5中的方法:

public static class EntityValidator
{
    public static IEnumerable<ErrorField> GetErrors(object instance)
    {
        var t = instance.GetType();
        var typeDescriptor = new AssociatedMetadataTypeTypeDescriptionProvider(t).GetTypeDescriptor(t);
 
        return from prop in typeDescriptor.GetProperties().Cast<PropertyDescriptor>()
                 from attribute in prop.Attributes.OfType<ValidationAttribute>()
                 where !attribute.IsValid(prop.GetValue(instance))
                 select new ErrorField(prop.Name, attribute.FormatErrorMessage(string.Empty));
    }  
}
 
[Serializable]
public class ErrorField
{
    public string ID { get; set; }
     
    public string Msg { get; set; }
 
    public ErrorField(string id, string msg)
    {
        this.ID = id;
        this.Msg = msg;
    }
 
 
}

最新文章

  1. css3 transfrom变换
  2. 危险的“我以为”DDoS&amp;丑陋的现实
  3. 6.6 Android 编译机制的变迁
  4. UnityShader之固定管线Fixed Function Shader【Shader资料3】
  5. easy dp
  6. AngularJs学习笔记--Guide教程系列文章索引
  7. 关于CSS的图像放大问题的解决,需要借助jQuery等直接用css3设置
  8. _int、NSInteger、NSUInteger、NSNumber的区别和联系
  9. AndroidStudio快捷键汇总
  10. Websocket协议数据帧传输和关闭连接
  11. Python建立socket并获取信息
  12. 你的第一个AngularJS应用--教程二:基架、建立和測试的工具
  13. 网络资源(5) - Android视频
  14. java保存获取Web内容的文件
  15. HTML5 &lt;canvas&gt; 基础学习
  16. 下拉菜单制作——利用CSS实现的一个实例
  17. PHP htmlspecialchars和htmlspecialchars_decode(函数)
  18. C++内存布局详解
  19. Django普通文件上传
  20. Java并发编程(五)锁的使用(下)

热门文章

  1. Node.js权威指南 (7) - 实现基于TCP与UDP的数据通信
  2. mkimage使用详解
  3. iOS设备的重力感应
  4. wikioi 1154 能量项链 (2006年NOIP全国联赛提高组)
  5. SVN 资源库报错 E175002
  6. 得到创建人Id
  7. [AngualrJS + Webpack] Production Source Maps
  8. Qt 学习之路:坐标系统
  9. 使用 Xcode 和 Android Studio 管理 iOS 和 Android 项目版本
  10. Linux chmod