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