• C#4.0图解教程


    1.特性 定义

    Attribute用来对类、属性、方法等标注额外的信息,贴一个标签(附着物)
    通俗:给 类 或 类成员 贴一个标签,就像航空部为你的行李贴一个标签一样

    注意,特性 是 类 和 类的成员 标签,不是对象的!

    官方定义:公共语言运行时允许添加类似关键字的描述声明,叫做Attributes; 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和.Net文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。

    我们简单的总结为:定制特性attribute,本质上是一个类,其为目标元素提供关联附加信息,并在运行期以反射的方式来获取附加信息。具体的特性实现方法,在接下来的讨论中继续深入。

    1.1 Attribute 自定义特性类

    Attribute就是类,Attribute类名一般都以Attribute结尾

    展开

    1.2 Attribute 带数据的特性类

    展开

    1.3 获取特性里的数据

    展开

    1.4 自定义Attribute

    Attribute都从System. Attribute类继承,类名一般以Attribute结尾
    创建构造函数
    标记类的用途—AttributeUsage标记(标记的标记):

    AttributeTargets:可以添加到哪些成员上。

    AllowMultiple:是否允许在一个成员上标记这个Attribute的多个实例,默认false。标注在Attribute类的类名上方。

    展开

    1.5 练习:正则表达式校验Attribute

    写正则表达式验证器,在属性上根据需要添加RegexValidatorAttribute。这种用法在
    ASP.Net MVC中用的非常多

    class Customer
    {
    [RegexValidator(@"^S+@S+$")]
    public string Email{ get; set; }
    [RegexValidator(@"^d{15}$|^d{18}$")]
    public string IdNumber{ get; set; }
    }

    编写Validate方法,在Validate方法中会对标记了RegexValidator的属性采用指定的正则表达
    式进行数据校验。步骤:
    1、开发RegexValidatorAttribute,提供保存正则表达式的Pattern属性,以及一个接受正则表达式的构造函数。用AttributeUsage标记RegexValidatorAttribute只能添加到属性上。
    2、 Validate方法中取得obj对应的Type对象,遍历type.GetProperties()所有属性,如果属性是string类型,并且定义了RegexValidator,取得RegexValidator对象,读取对象的Pattern对象多和正则表达式。
    3、获得属性的值string value = prop.GetValue(obj, null) as string,用正则表达式进行校验

    1.6 图解特性

    QQ图片20140210161040

  • 相关阅读:
    linux c++爬虫(一)
    计算进程消费cpu和内存
    ZooKeeper server &&client
    ZooKeeper 数据模型
    转载 分布式协调技术 分布式锁
    转载 ~shell简介
    增删改查时要注意的几个地方
    搜索时,大小写问题
    ajax的一些实用技巧
    向redis插入数据时,返回值问题
  • 原文地址:https://www.cnblogs.com/tangge/p/3535738.html
Copyright © 2020-2023  润新知