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

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();
}

}
}

原文地址:https://www.cnblogs.com/netmvc8/p/3515037.html