using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace AttributeDemo{
/* * 有关该属性类的一些特性。 * AttributeUsage:指定自定义属性的所能够应用的类成员项。比如All所有、Assembly组件、Classic类、Delegates委托、Methods方法等....... * Inherited:表示使用这一属性的类,其派生类是否可以继承基类的属性。 * AllowMultiple:表示使用这一属性的类,以否可同时应用该多个该属性的实例。 **/ [AttributeUsage(AttributeTargets.All | AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
/// <summary> /// 有关应用程序诸如更新日期、更新次数、作者以及版本数的相关说明性自定义属性类 /// </summary> class CustomAttribute : System.Attribute { private string Author; //作者 public string Authors { get { return Author; } set { Author = value; } } private string lastUpdate; //更新日期 public string LastUpdate { get { return lastUpdate; } set { lastUpdate = value; } } private int numberUpdate; //更新次数 public int NumberUpdate { get { return numberUpdate; } set { numberUpdate = value; } } private string version; //版本数 public string Version { get { return version; } set { version = value; } }
#region 自定义属性参数值【位置参数】 在使用该属性时,必须完全匹配。 /// <summary> /// 带参构造函数对于字段进行初始化 /// </summary> /// <param name="Author">作者</param> /// <param name="lastUpdate">更新日期</param> /// <param name="numberUpdate">更新次数</param> /// <param name="version">版本数</param> public CustomAttribute(string Author, string lastUpdate, int numberUpdate, string version) { this.Author = Author; this.lastUpdate = lastUpdate; this.numberUpdate = numberUpdate; this.version = version; } #endregion
#region 自定义属性参数值【命令参数】在使用该属性时,可根据情况是否采用。 /// <summary> /// 注释说明该程序用途的属性 /// 注释说明应用该属性的程序的作用。(整个程序) /// </summary> public string ProgramComment { get { return ProgramComment; } set { ProgramComment = value; } } /// <summary> /// 注释说明该类用途的属性 /// 注释说明应用该属性的类的作用(应用在类成员上) /// </summary> public string ClassComment { get { return ClassComment; } set { ClassComment = value; } } /// <summary> /// 注释说明该方法用途的属性 /// 注释说明应用该属性的方法的作用(应用在方法成员上) /// </summary> public string MethodComment { get { return MethodComment; } set { MethodComment = value; } } #endregion
}
/* * 在使用自定义属性时,需要完全匹配位置参数、有选择性的匹配命令参数,也可不提供命令参数。 * */ [CustomAttribute("kewen", "2009-08-19", 1, "1.0", ClassComment = "在这里测试TextAttribute类是否应用了自定义属性")] class TextAttribute {
............
}
}
