一个简单的演示的例子
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A0070_CustomAttributes.Sample
{
/// <summary>
/// 这个类为其他类定义 附加属性
/// </summary>
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct)]
class Creator : System.Attribute
{
String name;
String date;
String version;
/// <summary>
/// 构造函数.
/// </summary>
/// <param name="name"> 用户名 </param>
/// <param name="date"> 日期 </param>
/// <param name="version"> 版本 </param>
public Creator(String name, String date, String version)
{
this.name = name;
this.date = date;
this.version = version;
}
/// <summary>
/// 显示细节信息.
/// </summary>
public void ShowInfo()
{
Console.WriteLine("name : {0}", name);
Console.WriteLine("date : {0}", date);
Console.WriteLine("version : {0}", version);
}
}
/// <summary>
/// 用于 测试 属性类的
/// </summary>
[Creator("Edward", "2010.9.15", "1.0")]
class Test1
{
}
/// <summary>
/// 用于 测试 属性类的
/// </summary>
[Creator("Kimi", "2010.9.14", "1.2")]
class Test2
{
}
/// <summary>
/// 用于 测试 属性类的
///
/// 注意: 这里的 Test3 继承了 Test2
///
/// Test2 与 Test3 均有属性
/// </summary>
[Creator("Ivy", "2010.9.13", "1.1")]
class Test3 : Test2
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using A0070_CustomAttributes.Sample;
namespace A0070_CustomAttributes
{
class Program
{
public static void PrintAttributeInfo(Type classType)
{
Console.WriteLine("{0}这个类的属性如下:", classType);
object[] attr = classType.GetCustomAttributes(true);
foreach (object o in attr)
{
Console.WriteLine("Attribute {0}", o);
// 假如对象是 Creator 的实例,那么再调用 具体的方法.
if (o is Creator)
{
((Creator)o).ShowInfo();
}
}
}
static void Main(string[] args)
{
PrintAttributeInfo(typeof(Test1));
PrintAttributeInfo(typeof(Test2));
PrintAttributeInfo(typeof(Test3));
Console.ReadLine();
}
}
}
运行结果如下:
A0070_CustomAttributes.Sample.Test1这个类的属性如下:
Attribute A0070_CustomAttributes.Sample.Creator
name : Edward
date : 2010.9.15
version : 1.0
A0070_CustomAttributes.Sample.Test2这个类的属性如下:
Attribute A0070_CustomAttributes.Sample.Creator
name : Kimi
date : 2010.9.14
version : 1.2
A0070_CustomAttributes.Sample.Test3这个类的属性如下:
Attribute A0070_CustomAttributes.Sample.Creator
name : Ivy
date : 2010.9.13
version : 1.1