C#中关于Attribute的基本用法

来源:互联网 发布:ubuntu指令 编辑:程序博客网 时间:2024/05/22 01:36
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace ConsoleApplication{    class Program    {        static void Main(string[] args)        {            MethodInfo method = typeof(Operation).GetMethod("Add");            Attribute[] atts = Attribute.GetCustomAttributes(method);            foreach (Attribute att in atts)            {                if (att.GetType() == typeof(CommandAttribute))                {                    Console.WriteLine(((CommandAttribute)att).Name + "," + ((CommandAttribute)att).Label);                }            }            Console.ReadLine();            return;            #region 获取所有的方法属性            Operation testClass = new Operation();            Type type = testClass.GetType();            // Iterate through all the methods of the class.            foreach (MethodInfo mInfo in type.GetMethods())            {                // Iterate through all the Attributes for each method.                foreach (Attribute attr in Attribute.GetCustomAttributes(mInfo))                {                    // Check for the AnimalType attribute.                    if (attr.GetType() == typeof(CommandAttribute))                        Console.WriteLine(                            "Method {0} has a CommandAttribute {1},{2} .",                            mInfo.Name, ((CommandAttribute)attr).Label, ((CommandAttribute)attr).Name);                }            }            #endregion            Console.ReadLine();        }    }    public class Operation    {        [CommandAttribute("AddLabel", "AddName")]        public void Add()        {            Console.WriteLine("Add");        }        [CommandAttribute("DelLabel", "DelName")]        public void Del()        {            Console.WriteLine("Del");        }    }    [AttributeUsage(AttributeTargets.Method)]    public class CommandAttribute : Attribute    {        public string Label { get; set; }        public string Name { get; set; }        public CommandAttribute() { }        public CommandAttribute(string label, string name)        {            this.Label = label;            this.Name = name;        }    }}

0 0
原创粉丝点击