zoukankan      html  css  js  c++  java
  • c#中枚举的使用

    枚举在系统中广泛使用。对于整个系统中统一的定义某类标准化使用非常重要。

    枚举的使用,主要使用值去判定是否相等,内容经常是作为显示说明。

    为了解决有时显示说明中带特殊符号时,要在说明中去备注。取得备注然后作为显示说明也是一个需要解决的问题。

    举例说明:

    /// <summary>
    /// 通讯类型
    /// </summary>
    public enum EnumCommType
    {
    /// <summary>
    /// GRRS
    /// </summary>
    [Description("GRRS")]
    GRRS=0,
    /// <summary>
    /// (虚拟)专网(Modbus TCP)
    /// </summary>
    [Description("(虚拟)专网(Modbus TCP)")]
    ModbusTCP=1,
    /// <summary>
    /// (虚拟)专网(Modbus RTU)
    /// </summary>
    [Description("(虚拟)专网(Modbus RTU)")]
    ModbusRTU=2,
    /// <summary>
    /// OPC
    /// </summary>
    [Description("OPC")]
    OPC=4,
    /// <summary>
    /// 其他(网络、串口、中间库导入、WebServices导入)
    /// </summary>
    [Description("其他(网络、串口、中间库导入、WebServices导入)")]
    Other=9
    }

    1. 根据编号获取到枚举

    (EnumCommType)dev.C_CommType

    2.根据编号获取到枚举内容

    ((EnumCommType)dev.C_CommType).ToString()

    3. 提供获取枚举说明的方法

    ((EnumCommType)dev.C_CommType).GetDescription()

    获取枚举的扩展方法定义

    /// <summary>
    /// 获取枚举的注解值
    /// </summary>
    /// <typeparam name="T">泛型</typeparam>
    /// <param name="enumValue">枚举值</param>
    /// <returns>返回枚举注解</returns>
    public static string GetDescription<T>(this T enumValue)
    where T : struct, IConvertible
    {
    if (!typeof(T).IsEnum)
    {
    return null;
    }

    var description = enumValue.ToString();
    var fieldInfo = enumValue.GetType().GetField(enumValue.ToString());

    if (fieldInfo != null)
    {
    var attrs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
    if (attrs != null && attrs.Length > 0)
    {
    description = ((DescriptionAttribute)attrs[0]).Description;
    }
    }

    return description;
    }

  • 相关阅读:
    杜教筛学习笔记
    AtCoder Beginner Contest 188 F
    求和公式
    洛谷P4848 崂山白花蛇草水 权值线段树+KDtree
    二次剩余学习笔记
    Miller Rabin素数检测与Pollard Rho算法
    半平面交学习笔记
    凸包习题总结
    多项式半家桶
    CF997解题报告
  • 原文地址:https://www.cnblogs.com/lvlaozf/p/14824502.html
Copyright © 2011-2022 走看看