首页 > 其他 > 详细

下面的代码示例演示 Attribute 的用法。

时间:2014-07-22 23:07:25      阅读:431      评论:0      收藏:0      [点我收藏+]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace ConsoleApplication1
{
//An enumeration of animals.Start at 1(0=uninitialized);
public enum Animal
{
//Pets
Dog=1,
Cat,
Bird,
}


//A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute
{
//The constructor is called when the attirbute is set
public AnimalTypeAttribute(Animal pet)
{
thePet = pet;
}
//Keep a variable internally...
protected Animal thePet;

//..and show a copy to outside world.
public Animal Pet {
get { return thePet; }
set { thePet = value; }
}
}

//A test class where each method has its own pet
class AnimalTypeTestClass
{
[AnimalType(Animal.Dog)]
public void DogMethod(){}

[AnimalType(Animal.Cat)]
public void CatMethod(){}

[AnimalType(Animal.Bird)]
public void BirdMethod() { }
}
class DemoClass
{
static void Main(string[] args)
{
AnimalTypeTestClass testClass = new AnimalTypeTestClass();
Type type = testClass.GetType();
//Iterate through all the methods of class
foreach (MethodInfo mInfo in type.GetMethods()) //mInfo=Void DogMethod()
{


//Iterate through all the Attributes for each method
foreach (Attribute attr in Attribute.GetCustomAttributes(mInfo))//attr=ConsoleApplication1.AnimalTypeAttribute
{

//Check for the AnimalType attribute
if(attr.GetType() == typeof(AnimalTypeAttribute))
{
Console.WriteLine("Method {0} has a pet{1} attribute.", mInfo.Name,((AnimalTypeAttribute)attr).Pet);

/*
* Output:
* Method DogMethod has a pet Dog attribute.
* Method CatMethod has a pet Cat attribute.
* Method BirdMethod has a pet Bird attribute.
*/
}

}
}
Console.ReadKey();
}

}
}

下面的代码示例演示 Attribute 的用法。

原文:http://www.cnblogs.com/netmvc8/p/3515037.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!