标签:
<1>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication1
{
//Attribute 类
//TypeId属性: 当在派生类中实现时,获取该 Attribute 的唯一标识符。
//AttributeUsageAttribute 类 (AttributeUsageAttribute 类是继承自 Attribute 的)
//AttributeUsageAttribute.Inherited 属性:获取或设置一个布尔值,该值指示指示的属性能否由派生类和重写成员继承。如果该属性可由派生类和重写成员继承,则为 true,否则为 false。默认为 true。
//AttributeUsageAttribute.AllowMultiple 属性:获取或设置一个布尔值,该值指示能否为一个程序元素指定多个指示属性实例。如果允许指定多个实例,则为 true;否则为 false。默认为 false。
//AttributeUsageAttribute.ValidOn 属性:获取一组值,这组值标识指示的属性可应用到的程序元素。属性值:一个或多个 AttributeTargets 值。默认为 All。
//注意:对于一个特性类使用Attribute后缀是一个惯例。然而,如果不添加编译器会自动添加匹配。
//限定特性类的应用范围 (这里规定ClassMsg这个特性类只能用于类和字段)
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Field, AllowMultiple = true, Inherited = false)]
//定制MsgAttribute特性类,继承于Attribute
public class ClassMsgAttribute : Attribute
{
//定义_msg字段和Msg属性//Msg属性用于读写msg字段
string _msg;
public string Msg { get { return _msg; } set { _msg = value; } }
public ClassMsgAttribute() { }
//重载构造函数接收一个参数,赋值给_msg字段
public ClassMsgAttribute(string s) { _msg = s; }
}
//---------------------调用ClassMsg这个特性---------------------//
//在Person类上标记ClassMsg特性
[ClassMsg(Msg = "这是关于人的姓名信息的类")]
class Person
{
//在_name字段上应用ClassMsg特性
[ClassMsg("这是存储姓名的字段")]
string _name;
//以下特性无法应用,因为MsgAttribute定义的特性只能用于类和字段
//[ClassMsg("这是读写姓名字段的属性")]
public string Name { get { return _name; } set { _name = value; } }
}
}标签:
原文地址:http://blog.csdn.net/fanbin168/article/details/42970221