首先定義一個枚舉
/// <summary> /// 枚舉注釋的自定義屬性類 /// </summary> public class EnumDescriptionAttribute : Attribute { private string m_strDescription; public EnumDescriptionAttribute(string strPrinterName) { m_strDescription = strPrinterName; } public string Description { get { return m_strDescription; } } } /// <summary> /// 測試類型 /// </summary> public enum TestType { /// <summary> /// 分靜態精度測量 /// </summary> [EnumDescription("分靜態精度測量")] StaticPrecisionOpen, /// <summary> /// 合靜態精度測量 /// </summary> [EnumDescription("合靜態精度測量")] StaticPrecisionClose, /// <summary> /// 副分靜態精度測量 /// </summary> [EnumDescription("副分靜態精度測量")] StaticPrecisionOPenSec, /// <summary> /// 頻譜分析 /// </summary> [EnumDescription("頻譜分析")] Dynamic, /// <summary> /// 分電流峰值 /// </summary> [EnumDescription("分電流峰值")] CurMaxOpen, /// <summary> /// 合電流峰值 /// </summary> [EnumDescription("合電流峰值")] CurMaxClose }
接下來通過循環得到枚舉的值和注釋
Dictionary<string, int> enumDic = new Dictionary<string, int>(); public void ForEnum() { Type t = typeof(TestType); Array arrays = Enum.GetValues(t); for (int i = 0; i < arrays.LongLength; i++) { TestType test = (TestType)arrays.GetValue(i); FieldInfo fieldInfo = test.GetType().GetField(test.ToString()); object[] attribArray = fieldInfo.GetCustomAttributes(false); EnumDescriptionAttribute attrib = (EnumDescriptionAttribute)attribArray[0]; enumDic.Add(attrib.Description, (int)test); } }