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

  • 相关阅读:
    C#线程同步(1)- 临界区&Lock
    详细解析Java中抽象类和接口的区别
    防止重复提交的几种办法
    网页中实现JSON的编辑与显示
    xcode5 ios7升级后的一系列问题解决
    hadoop-2.0.0-mr1-cdh4.2.0源码编译总结
    hadoop-2.0.0-cdh4.2.1源码编译总结
    cocos2d-iphone加入芒果广告
    hadoop2.0 eclipse 源码编译
    HBase学习笔记
  • 原文地址:https://www.cnblogs.com/Ray898/p/4924145.html
Copyright © 2011-2022 走看看