一个简单的通用验证类的实现

进园子三年多了,从来都只是看各位大神的文章,而没有写过,今天心血来潮来写一篇,本人水平略浅,写得不好勿见怪,大神勿喷

首先定义一个验证类型枚举,这里只列出最简单的两种验证类型

 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         }

到此就算完了,谢谢

posted @ 2015-08-07 16:25  二本二  阅读(287)  评论(1编辑  收藏  举报