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
{
............
}
}