zoukankan      html  css  js  c++  java
  • 利用DataAnnotations验证实体(类)的属性

    .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;
    		}
    
    
    	}
    

  • 相关阅读:
    杭电OJ 输入输出练习汇总
    七月读书笔记
    情报分析报告阅读笔记
    情报研究与分析入门阅读笔记
    旁观者攻击
    域前置技术相关学习
    CC攻击和C2的区别
    DNS投毒学习分析总结
    数字证书2.0版本学习总结
    《在树洞里》-感悟
  • 原文地址:https://www.cnblogs.com/asyuras/p/2083805.html
Copyright © 2011-2022 走看看