zoukankan      html  css  js  c++  java
  • C#给枚举增加一个Attribute,并通过反射获取Attribute的值。(借鉴)

        [AttributeUsage(AttributeTargets.Field)]
        public class EnumExtension : Attribute
        {
            private string title;
            public EnumExtension(string title)
            {
                this.title = title;
            }
            public static string Get(Type tp, string name)
            {
                MemberInfo[] mi = tp.GetMember(name);
                if (mi != null && mi.Length > 0)
                {
                    EnumExtension attr = Attribute.GetCustomAttribute(mi[0], typeof(EnumExtension)) as EnumExtension;
                    if (attr != null)
                    {
                        return attr.title;
                    }
                }
                return null;
            }
            public static string Get(object enm)
            {
                if (enm != null)
                {
                    MemberInfo[] mi = enm.GetType().GetMember(enm.ToString());
                    if (mi != null && mi.Length > 0)
                    {
                        EnumExtension attr = Attribute.GetCustomAttribute(mi[0], typeof(EnumExtension)) as EnumExtension;
                        if (attr != null)
                        {
                            return attr.title;
                        }
                    }
                }
                return null;
            }
        }
        public enum BorderStyle
        {
            [EnumExtension("正常")]
            None,
            [EnumExtension("圆角")]
            Rounded
        }

     使用以下的方法就能取得枚举的Attribute值:

    string name = EnumExtension.Get(BorderStyle.Rounded);
  • 相关阅读:
    MySQL复制表结构和内容到另一张表中的SQL
    Page Cache(页缓存)
    mmap 与 munmap
    Shenandoah 与 ZGC
    InfluxDB入门
    SparkSQL 疫情Demo练习
    CyclicBarrier 解读
    mysql存储过程
    Kibana7.3.2与ElasticSearch7.3.2的集成
    Greenplum简介
  • 原文地址:https://www.cnblogs.com/jcdd-4041/p/3347168.html
Copyright © 2011-2022 走看看