• C# Attribute的用法


     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Reflection;
     6 
     7 namespace ConsoleApplication1
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             //Operation op = new Operation();
    14             MethodInfo method = typeof(Operation).GetMethod("Add");
    15             Attribute[] atts = Attribute.GetCustomAttributes(method);
    16             foreach (Attribute att in atts)
    17             {
    18                 if (att.GetType() == typeof(CommandAttribute))
    19                 {
    20                     Console.WriteLine(((CommandAttribute)att).Name + "," + ((CommandAttribute)att).Label);
    21                 }
    22             }
    23             Console.ReadLine();
    24             return;
    25 
    26             #region 获取所有的方法属性
    27 
    28             Operation testClass = new Operation();
    29             Type type = testClass.GetType();
    30             // Iterate through all the methods of the class.
    31             foreach (MethodInfo mInfo in type.GetMethods())
    32             {
    33                 // Iterate through all the Attributes for each method.
    34                 foreach (Attribute attr in Attribute.GetCustomAttributes(mInfo))
    35                 {
    36                     // Check for the AnimalType attribute.
    37                     if (attr.GetType() == typeof(CommandAttribute))
    38                         Console.WriteLine(
    39                             "Method {0} has a CommandAttribute {1},{2} .",
    40                             mInfo.Name, ((CommandAttribute)attr).Label, ((CommandAttribute)attr).Name);
    41                 }
    42             }
    43 
    44             #endregion
    45 
    46 
    47 
    48             Console.ReadLine();
    49         }
    50     }
    51 
    52 
    53 
    54 
    55     public class Operation
    56     {
    57         [Command("AddLabel""AddName")]
    58         public void Add()
    59         {
    60             Console.WriteLine("Add");
    61         }
    62 
    63         [Command("DelLabel""DelName")]
    64         public void Del()
    65         {
    66             Console.WriteLine("Del");
    67         }
    68     }
    69 
    70     [AttributeUsage(AttributeTargets.Method)]
    71     public class CommandAttribute : Attribute
    72     {
    73         public string Label { getset; }
    74         public string Name { getset; }
    75 
    76         public CommandAttribute() { }
    77 
    78         public CommandAttribute(string label, string name)
    79         {
    80             this.Label = label;
    81             this.Name = name;
    82         }
    83     }
    84 }
  • 相关阅读:
    Python_turtle绘图实例(持续更新)
    C++程序设计实验考试准备资料(2019级秋学期)
    利用next_permutation()实现全排列 完成 阮小二买彩票
    用埃氏算法来素数求和
    C++指针注意事项
    double与float的输入输出格式
    图片文件隐写术
    文件操作与隐写
    MFC 消息机制
    MFC应用中处理消息 创建窗口和会话框的顺序
  • 原文地址:https://www.cnblogs.com/pnljs/p/3610863.html
Copyright © 2020-2023  润新知