zoukankan      html  css  js  c++  java
  • 自定义枚举类型的注释属性用于UI的显示

    1、定义枚举类型 

    public enum CommStatus
        {
            /// <summary>
            /// Udp类型
            /// </summary>
            [Description("Udp类型")] Udp = 0,

            /// <summary>
            /// Udp类型
            /// </summary>
            [Description("Udp广播类型")]
            Udpbroadcast = 1,
            /// <summary>
            /// Tcp服务端类型
            /// </summary>
            [Description("Tcp服务端类型")] TcpServer = 2,

            /// <summary>
            /// Tcp客户端类型
            /// </summary>
            [Description("Tcp客户端类型")] TcpClient = 3
        }

    2、定义自定义属性类型

     public class DescriptionAttribute : Attribute
        {
            public DescriptionAttribute(string desc)
            {
                Description = desc;
            }

            public string Description { get; set; }
        }

    3、通过反射获取枚举属性的自定义注释内容

    public class EnumDescription
        {
            public static string GetEnumDescription<TEnum>(object value)
            {
                var enumType = typeof(TEnum);
                if (!enumType.IsEnum)
                {
                    throw new ArgumentException($"enumItem req{value.ToString()}uires a Enum ");
                }
                var name = Enum.GetName(enumType, Convert.ToInt32(value));
                if (name == null)
                    return "";
                var objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
                var attr = objs[0] as DescriptionAttribute;
                if (objs.Length == 0)
                {
                    return string.Empty;
                }
                else
                {
                    return attr != null ? attr.Description : string.Empty;
                }
            }
        }

    4、需要使用枚举的自定义注释的地方直接调用一下方法GetEnumDescription 给上枚举参数即可

  • 相关阅读:
    怎样写贪吃蛇小游戏?用100行python代码轻松解决!
    面试必问的celery,你了解多少?
    您的机器学习环保吗?一只AI训练排出180吨二氧化碳
    NLP技术应用到音乐领域,分分钟让你变成音乐大师!
    数据可视化“升级”修炼宝典
    一文掌握Python可视化库的两大王者
    多线程-模拟阻塞queue队列
    设计模式-单例模式
    多线程之wait,notify,volatile,synchronized,sleep
    spring与quartz整合
  • 原文地址:https://www.cnblogs.com/Ray898/p/4924145.html
Copyright © 2011-2022 走看看