Attributes(2): Displaying attributes for a class.(显示类属性)

输出类属性

 

using System;

using System.Reflection;

 

namespace Attribute02

{

//用于Class和Struct类型

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]

class Creator : Attribute

{

private string date;

private string name;

private double version;

 

public Creator(string name, string date)

{

this.name = name;

this.date = date;

this.version = 0.1;

}

 

public Double Version

{

get { return this.version; }

set { this.version = value; }

}

 

//输出

public void Dump()

{

Console.WriteLine("Name: {0} Date: {1} Version: {2}", this.name, this.date, this.version);

}

}

[Creator("PSM", "2013-09-01", Version=1.0)]

class ATestClass01

{

public ATestClass01()

{

}

}

[Creator("PSM", "2013-09-01", Version = 2.0)]

class ATestClass02

{

public ATestClass02()

{

}

}

[Creator("PSM", "2013-09-01", Version = 3.0)]

class ATestClass03

{

public ATestClass03()

{

}

}

 

class Program

{

static void Main(string[] args)

{

PrintAttributeInformation(typeof(ATestClass01));

PrintAttributeInformation(typeof(ATestClass02));

PrintAttributeInformation(typeof(ATestClass03));

Console.ReadLine();

}

 

static void PrintAttributeInformation(Type typeName)

{

Console.WriteLine("Attributes for class {0}", typeName);

object[] attr = typeName.GetCustomAttributes(true);

foreach (object o in attr)

{

Console.WriteLine("Attribute {0}", 0);

if (o is Creator)

{

((Creator)o).Dump();

}

}

}

}

}

posted @ 2013-09-06 17:29  TryHard  阅读(272)  评论(0编辑  收藏  举报