说明
C#中的枚举是一种用于定义命名常量集合的数据类型。枚举常量是具有固定值的唯一标识符,这些值可以在整个程序中使用。
示例
using System.ComponentModel;
namespace xxxx.Enun
{
/// <summary>
/// 定义枚举
/// </summary>
public enum XxxxEnum
{
/// <summary>
/// GW_S1
/// </summary>
[Description("gw-s1")]
GW_S1,
/// <summary>
/// GW_S2
/// </summary>
[Description("gw-s2")]
GW_S2,
}
}
/// <summary>
/// 获取枚举的特性 DescriptionAttribute
/// </summary>
/// <param name="xxxxEnum">xxxxEnum</param>
/// <returns>返回枚举的Description特性的值</returns>
public static string GetDescription(XxxxEnum xxxxEnum)
{
FieldInfo field = xxxxEnum.GetType().GetField(xxxxEnum.ToString());
object[] attributes = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0)
{
DescriptionAttribute attribute = (DescriptionAttribute)attributes[0];
return attribute != null ? attribute.Description : xxxxEnum.ToString();
}
return xxxxEnum.ToString();
}
/// <summary>
/// 获取枚举的所有Description特性
/// </summary>
/// <typeparam name="TEnum">枚举</typeparam>
/// <returns>返回枚举Description的值集合</returns>
public static Dictionary<TEnum, string> GetDescriptions<TEnum>() where TEnum : Enum
{
var descriptions = new Dictionary<TEnum, string>();
var enumType = typeof(TEnum);
foreach (TEnum value in Enum.GetValues(enumType))
{
FieldInfo field = enumType.GetField(value.ToString());
object[] attributes = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes == null || attributes.Length == 0)
{
continue;
}
foreach (var item in attributes)
{
DescriptionAttribute attribute = (DescriptionAttribute)item;
string description = attribute != null ? attribute.Description : value.ToString();
if (descriptions.ContainsKey(value))
{
continue;
}
descriptions[value] = description;
}
}
return descriptions;
}