标签:
进园子三年多了,从来都只是看各位大神的文章,而没有写过,今天心血来潮来写一篇,本人水平略浅,写得不好勿见怪,大神勿喷
首先定义一个验证类型枚举,这里只列出最简单的两种验证类型
1 /// <summary> 2 /// 验证类型枚举 3 /// </summary> 4 public enum ValidateType 5 { 6 /// <summary> 7 /// 不为NULL验证 8 /// </summary> 9 NotNullValidate, 10 /// <summary> 11 /// 不为空验证 12 /// </summary> 13 NotNullOrEmptyValidate 14 }
然后再定义每个验证类型对应的验证方法,验证类型对应的方法名一致
1 /// <summary> 2 /// 不为NULL验证 3 /// </summary> 4 /// <param name="value"></param> 5 /// <returns></returns> 6 public static bool NotNullValidate(object value) 7 { 8 if (value is DBNull) 9 return false; 10 return value == null ? false : true; 11 } 12 13 /// <summary> 14 /// 不为空验证 15 /// </summary> 16 /// <param name="value"></param> 17 /// <returns></returns> 18 public static bool NotNullOrEmptyValidate(object value) 19 { 20 if (value is DBNull) 21 return false; 22 if (value == null) 23 return false; 24 return string.IsNullOrEmpty(value.ToString()) ? false : true; 25 }
方法定义完之后就是调用了,这里我写了一个通用的调用方法
1 /// <summary> 2 /// 验证object值 3 /// </summary> 4 /// <param name="value"></param> 5 /// <param name="validateType"></param> 6 /// <returns></returns> 7 public static bool ValidateObject(object value,ValidateType validateType) 8 { 9 ValidateUtil validateObj=new ValidateUtil(); 10 11 //反射获取验证类型对应的验证方法 12 MethodInfo method = validateObj.GetType().GetMethod(validateType.ToString()); 13 if (method == null) 14 throw new Exception("没有找到此验证类型对应的验证方法:" + validateType.ToString()); 15 16 return (bool)method.Invoke(validateObj, new object[] { value }); 17 }
在这基础上我扩展了一个实体类的验证
1 /// <summary> 2 /// 验证实体类中某些字段 3 /// </summary> 4 /// <param name="objEntity">实体类</param> 5 /// <param name="validateFields">Dictionaty 需要验证的字段名,验证类型枚举</param> 6 /// <returns></returns> 7 public static bool ValidateEntity(object objEntity,Dictionary<string,ValidateType> validateFields) 8 { 9 PropertyInfo[] property = objEntity.GetType().GetProperties(); 10 foreach (PropertyInfo field in property) 11 { 12 object value = field.GetValue(objEntity, null); 13 14 if (validateFields != null && validateFields.ContainsKey(field.Name)) 15 if (!ValidateUtil.ValidateObject(value, validateFields[field.Name])) 16 throw new Exception(field.Name + ":"+validateFields[field.Name].ToString()+"验证未通过!"); 17 } 18 return true; 19 }
到此就算完了,谢谢
标签:
原文地址:http://www.cnblogs.com/C0DE-MONKEY/p/4711179.html