• 下面的代码示例演示 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();
    }

    }
    }

  • 相关阅读:
    班别:批量添加导师
    批量删除注入字段,触发器防止注入。
    c#生成不重复随机数
    网络蜘蛛爬虫程序
    session丢失问题整理
    asp.net 自动生成控件
    C#实现所有经典排序算法 收藏
    泛型学习
    Android 判断网络并打开设置界面
    Android 获取Android手机中SD卡存储信息 获取剩余空间
  • 原文地址:https://www.cnblogs.com/netmvc8/p/3515037.html
Copyright © 2020-2023  润新知