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

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

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

 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         }

到此就算完了,谢谢

时间: 2025-01-14 04:34:21

一个简单的通用验证类的实现的相关文章

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

一个简单的参数校验类

当我们写js的重载函数的时候,我们需要判断不同的输入情况. 而,一般我们是根据参数的个数来判断的,但是,常常情况并非如此: function abc(a,b,c) a:string b:number c:boolean 或者 a:string b:string c:number 这两种情况都是参数个数为3,但是参数类型却完全不同.如何的方便的构建一个重载函数呢? 用我的类即可: 类代码(很简短): var Param = { varify: function (oParam, sParamTyp

PHP实现的一个简单的数据库操作类(修改版)

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $port; private $username; private $password; public $default_db; private $charset;

Net WebApi一个简单的Token验证

1.前言 WebAPI主要开放数据给手机APP,Pad,其他需要得知数据的系统,或者软件应用.Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能.我上次写的<Asp.Net MVC WebAPI的创建与前台Jquery ajax后台HttpClient调用详解>这种跟明显安全性不是那么好,于是乎这个就来了 ,用户需要访问的API都必须带有票据过来,说白了就是登陆之后含有用户信息的Token.开始撸... 2.新建一个WebApi项目 在App_Start文件夹下面新建一个Base

一个简单实用的log类

自己写一些小代码的时候总是用fprintf来写log,感觉这样不太科学,还是写一个通用的简单带log level的log类,以后就拿来复用吧.这个类实现了非常简单的功能:如果指定了log文件path和name创建一个log文件,并将各种level的写入文件中,否则都打印到屏幕,格式如下: [DEBUG] : xxxxx [WARN] : xxxx [MSG] : xxxxx 代码: //--------------log.h---------------------- #ifndef __LOG

编写一个简单的正则表达式工具类

跟着视频的讲解,也亲手敲了这么一个正则表达式的类,感觉很不错,真是温故而知新,本来想把注释写的逼格高一点的,今天晚了有点累,先简单的写一下,有时间了再完善完善. <?php class regexTool{ //内置一些常用的正则表达式 private $validate = array( 'require'   =>  '/.+/', 'email'     =>  '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'url'    

业务重点-实现一个简单的手机号码验证

前言 ????本文纯干货,直接拿走使用,不用付费.在业务开发中,手机号码验证是我们常常需要面对的问题,目前市场上各种各样的手机号码验证方式,比如正则表达式等等,本文结合实际业务场景,在业务级别对手机号码进行严格验证:同时增加可配置方式,方便业务扩展,代码非常简单,扩展非常灵活. 1. 目前手机号段有哪些 1.1 目前国内的手机号段主要集中在三大运营商手上,还有一些内部号段和虚拟号段 "中国电信": "133,153,189,180,181,177,173,199,174,14

Struts+spring+Hibernate 制作一个简单的登录验证

index.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

一个简单实现的string类

为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 开发工具:Visual Studio 2015 CMyString类的头文件CMyString.h 1 #include <iostream> 2 3 #ifndef __C_MY_STRING__ 4 #define __C_MY_STRING__ 5 6 class CMyString 7 { 8 public: 9 //默认构造函数 10 CMyString(); 11 //