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 给上枚举参数即可

  • 相关阅读:
    别老想着怎么用好RPC框架,你得多花时间琢磨原理
    业务代码真的会有这么多坑?
    mac全部看视频屏幕闪烁适用于白果黑果
    iterm2 proxy配置
    源端和目标端数据对比
    frp内网穿透,rdp远程连接Windows计算机
    frp rdp远程桌面
    按块提交抽取数据
    创建索引被锁ora-00054资源正忙,但指定以nowait方式
    2017-9-17C#笔记(方法,方法参数 ,foreach语句)
  • 原文地址:https://www.cnblogs.com/Ray898/p/4924145.html
Copyright © 2011-2022 走看看