c# 使用特性封装提供额外行为Validate验证

namespace AttributeTest
{
    //使用特性封装提供额外行为Validate验证
    class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student()
            {
                Name = "123",
                QQ = 20000
            };
            Console.WriteLine(student.Validate());
            Console.ReadLine();
        }
    }
}
namespace AttributeTest
{
    //学生实体类
    public class Student
    {
        [Required]
        public string Name { get; set; }
        [Validate(10000,99999)]
        public long QQ { get; set; }
    }
}
namespace AttributeTest
{
    //特性attribute;就是一个类,直接继承/间接继承自Attribute父类
    //约定俗成用Attribute结尾,标记时就可以省略掉
    public abstract class AbstractValidateAttribute : Attribute
    {
        public abstract bool Validate(object value);
    }
}
    //验证不可为null或者空
    public class RequiredAttribute : AbstractValidateAttribute
    {

        public override bool Validate(object value)
        {
            return value != null && value.ToString() != "";
        }
    }
    //验证是否在范围内
    [AttributeUsage(AttributeTargets.Property)]
    public class ValidateAttribute : AbstractValidateAttribute
    {
        private long _Min;
        private long _Max;
        public ValidateAttribute(long min, long max)
        {
            _Max = max;
            _Min = min;
        }
        public override bool Validate(object value)
        {
            return value != null && long.TryParse(value.ToString(), out long Lvalue) && Lvalue > _Min && Lvalue < _Max;
        }
    }
    public static class AttributeExtend
    {
        //从类型  属性  方法 都可以获取特性实例,要求先IsDefined检测  再获取(实例化)
        public static bool Validate<T>(this T t)
        {
            Type type = t.GetType();
            foreach (PropertyInfo item in type.GetProperties())
            {
                if (item.IsDefined(typeof(AbstractValidateAttribute), true))
                {
                    object ovalue = item.GetValue(t);

                    AbstractValidateAttribute attribute = (AbstractValidateAttribute)item.GetCustomAttribute(typeof(AbstractValidateAttribute), true);

                    if (!attribute.Validate(ovalue))
                        return false;
                }
            }
            return true;

        }
    }

原文地址:https://www.cnblogs.com/wangdash/p/11967399.html

时间: 2024-11-10 13:58:42

c# 使用特性封装提供额外行为Validate验证的相关文章

jQuery Validate【为表单提供了强大的验证功能,让客户端表单验证变得更简单】

jQuery Validate jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言. 该插件是由 J?rn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,是 QUn

jQuery.Validate验证库

一.用前必备 官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassistance.de/api-browser/plugins.html 当前版本:1.5.5 需要JQuery版本:1.2.6+, 兼容 1.3.2 二.默认校验规则 (1)required:true 必输字段 (2)remote:"check.php" 使用ajax方法调用check.php

【JQ成长笔记】jQuery Validate验证插件

validate是一款很好的jq插件,提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言. 需要引入的js 1 <script type="text/javascript" src="../../scripts/jquery-1.3.1.js&qu

jQuery.Validate验证库的使用介绍

jQuery.Validate验证库1.下载jquery.validate,这里我提供jquery-validation-1.9.0,点击下载 默认校验规则 (1)required:true               必输字段(2)remote:"check.php"          使用ajax方法调用check.php验证输入值(3)email:true                  必须输入正确格式的电子邮件(4)url:true                    必

jquery validate 验证基础

jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API. 对于它基础的验证规则这里不做赘述,主要讲解它的异步验证. 需求如下:在一个form表中,需要根据用户ID来验证用户名,若数据库中已存在同样的用户ID对应同样的记录名称,则禁止插入或更新(更新时若记录名未发生改变,则需要再判断是否除此记录之外还存在同

jQuery Validate验证框架详解

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

JQuery validate验证规则

//定义中文消息 var cnmsg = { required: "必选字段", remote: "请修正该字段", email: "请输入正确格式的电子邮件", url: "请输入合法的网址", date: "请输入合法的日期", dateISO: "请输入合法的日期 (ISO).", number: "请输入合法的数字", digits: "只能输入整数

【转】jQuery Validate验证框架详解

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

ligerui的jquery.validate验证需要添加validate=&quot;{required:true,minlength:8,equalTo:&#39;#newpassword&#39;}&quot;

ligerui的jquery.validate验证需要添加validate="{required:true,minlength:8,equalTo:'#newpassword'}" ligerui的jquery.validate验证需要添加validate="{required:true,minlength:8,equalTo:'#newpassword'}"