首页 > 其他分享 >利用特性反射获取额外标注的信息

利用特性反射获取额外标注的信息

时间:2022-11-26 14:45:36浏览次数:36  
标签:反射 额外 Console GetRemark CommonAttribute Sex WriteLine public 标注

需求:我们想得到枚举上面的注释

1)枚举类

public enum Sex
    {
        /// <summary>
        /// 女
        /// </summary>
        [CommonAttribute("女")]
        Woman = 0,

        /// <summary>
        /// 男
        /// </summary>
        [CommonAttribute("男")]
        Man = 1,

        /// <summary>
        /// 其他
        /// </summary>
        [CommonAttribute("其他")]
        Other = 2
    }

2.特性类

public class CommonAttribute:Attribute
    {
        public string Remark { get; private set; }

        public CommonAttribute(string remark)
        {
            this.Remark = remark;
        }
    }

3.反射类(这里要引用反射 using System.Reflection;)

public class AttributeExtend
    {
        public static string GetRemark(Sex value)
        {
            Type type = value.GetType();
            var field = type.GetField(value.ToString());
            if (field.IsDefined(typeof(CommonAttribute), true))
            {
                CommonAttribute attribute = (CommonAttribute)field.GetCustomAttribute(typeof(CommonAttribute), true);
                return attribute.Remark;
            }
            else
            {
                return value.ToString();
            }
        }
    }

4.使用

static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Start");
                Console.WriteLine(AttributeExtend.GetRemark(Sex.Man));
                Console.WriteLine(AttributeExtend.GetRemark(Sex.Woman));
                Console.WriteLine(AttributeExtend.GetRemark(Sex.Other));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }

 

标签:反射,额外,Console,GetRemark,CommonAttribute,Sex,WriteLine,public,标注
From: https://www.cnblogs.com/dzw159/p/16927404.html

相关文章

  • 比较一下以“反射”和“表达式”执行方法的性能差异【转】
    由于频繁地使用反射会影响性能,所以ASP.NETMVC采用了表达式树的方式来执行目标Action方法。具体来说,ASP.NETMVC会构建一个表达式来体现针对目标Action方法的执行,并且将该......
  • Java反射
    反射:框架设计的灵魂,将类的各个组成部分封装为其他对象,这就是反射机制。反射的好处:1.可以在程序运行过程中,操作这些对象2.可以解耦,提高程序的可扩展......
  • Java 注解与反射 基础
    注解与反射基础什么是注解Annotation注解Annotation的作用:不是程序本身,可以对程序做出解释。可以被其他程序(比如编译器等)读取annotation的格式:注解是以”@注释名“再代......
  • 14、go的反射
    基本数据类型反射//利用函数的参数定义为空接口functestRefect(iinterface{}){ //调用TypeOf函数,返回reflect.Type类型的数据 reType:=reflect.TypeOf(i) fmt......
  • java 反射 Reflection
    一.什么是反射:Relection(反射):是Java被视为动态语言的关键,反射机制允许程序在执行期间借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性及方法公式......
  • Java反射机制
    反射特征:动态性编译时候确定不了哪个类的对象比如:后台已经在运行了,但还没有收到前端的请求,这时候,后台收到请求时,使用的是反射机制调用对象反射机制与面向对象的矛盾:不......
  • 反射和特性
    反射一个运行的程序查看本身的元数据或者其他程序集的元数据的行为叫做反射。元数据,就是描述数据的数据。Metadata存在于任何对数据和数据关系的描述中,NET是基于面......
  • Java 反射
         反射=反向射击=Java向自己射击=Java对自身进行描述=Java用研究外部事物的方法反过来研究自己——反射的好处:1.可以在程序运行过程中,操作这些对象。2.......
  • C#如何反射出委托的签名,反射调用委托
    本文阐述C#中如何反射出委托的签名,假如我们有委托FooDelegate定义如下delegatedoubleFooDelegate(stringparam,boolcondition);那么我们怎么用反射知道这个委托......
  • Java 注解和反射(一)注解
    一,注解(Annotation)顾名思义,注解,注释解释什么是注解?··Annotation是从JDK5.0开始引入的技术··Annotation的作用:1.不是程序本身,可以对程序做出解释(这一点和注释......