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;
}

 

posted @ 2021-05-29 09:32  laolv  阅读(463)  评论(0编辑  收藏  举报