zoukankan      html  css  js  c++  java
  • C# .NET 获取枚举值的自定义属性

    一、定义一个类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Reflection;
    
    namespace XXX.XXX.Utils
    {
        /// <summary>
        /// 备注特性
        /// </summary>
        public class DescAttribute : Attribute
        {
            private string m_desc;
            public DescAttribute(string desc)
            {
                this.m_desc = desc;
            }
            /// <summary>
            /// 备注
            /// </summary>
            public string Desc
            {
                get { return m_desc; }
                set { m_desc = value; }
            }
            /// <summary>
            /// 获取枚举的备注信息
            /// </summary>
            /// <param name="val">枚举值</param>
            /// <returns></returns>
            public static string GetEnumDesc(Enum val)
            {
                Type type = val.GetType();
                FieldInfo fd = type.GetField(val.ToString());
                if (fd == null)
                    return string.Empty;
                object[] attrs = fd.GetCustomAttributes(typeof(DescAttribute), false);
                string name = string.Empty;
                foreach (DescAttribute attr in attrs)
                {
                    name = attr.Desc;
                }
                return name;
            }
        }
        /// <summary>
        /// 枚举扩展类
        /// </summary>
        public static class EnumExtension
        {
            /// <summary>
            /// 获取枚举的备注信息
            /// </summary>
            /// <param name="em"></param>
            /// <returns></returns>
            public static string GetDesc(this Enum em)
            {
                Type type = em.GetType();
                FieldInfo fd = type.GetField(em.ToString());
                if (fd == null)
                    return string.Empty;
                object[] attrs = fd.GetCustomAttributes(typeof(DescAttribute), false);
                string name = string.Empty;
                foreach (DescAttribute attr in attrs)
                {
                    name = attr.Desc;
                }
                return name;
            }
        }
    }
    

     

    二、定义一个枚举,并引用如上命名空间

    public enum EnumCalculationTag
    {
            [Desc("This is description")]
            A
    }
    

      

    三、获取注解(需引用“一”中的命名空间)

    EnumCalculationTag.A.GetDesc()
    

      

  • 相关阅读:
    Mapreduce 进阶
    Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io .nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
    hive INSERT OVERWRITE table could not be cleaned up.
    flume 多chanel配置
    java jar包与配置文件的写法
    CDH 修改配置注意事项
    Scala 闭包
    Error: Java heap space
    Spark Streaming 执行流程
    python统计字符串中每个单词出现的个数【一行】
  • 原文地址:https://www.cnblogs.com/fan-yuan/p/10316352.html
Copyright © 2011-2022 走看看