列舉類型 Enum 在 C# 很常用的一種類型,所允許的型別必須是byte、sbyte、short、ushort、int、uint、long、ulong,在使用上沒特別指定的話基本類型是 int,對我自己來說在程式中使用 Enum 而不用 int 的好處是 Code 閱讀上比較清晰,舉例來說在閱讀代碼時第一段代碼使用 Enum 更容易讓人好懂些
作法 : 擴充方法 (Extension Method) + 反射 (Reflection)
- if (code == ResponseCode.OK)
- //todo
- if (code2 == 500)
- // 500是蝦米
針對 Enum 類型加上 GetDescriptionText 的擴充方法,讓使用端可以方便使用,擴充方法說明可以參考 MSDN 說明,不囉嗦直接看 Code
使用方式
- // 取得 Enum 列舉 Attribute Description 設定值
- public static string GetDescriptionText
(this T source) { FieldInfo fi = source.GetType().GetField(source.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( typeof(DescriptionAttribute), false); if (attributes.Length > 0) return attributes[0].Description; else return source.ToString(); }
後續
- public enum Days
- {
- [Description("今天星期日 End")]
- Sun,
- [Description("今天星期一 猴子穿新衣")]
- Mon,
- [Description("今天星期二 猴子肚子餓")]
- Tue,
- [Description("今天星期三 猴子去爬山")]
- Wed,
- [Description("今天星期四 猴子去考試")]
- Thu,
- [Description("今天星期五 猴子去跳舞")]
- Fri,
- [Description("今天星期六 猴子去斗六")]
- Sat
- }
- static void Main()
- {
- Console.WriteLine(Days.Mon.GetDescriptionText());
- }
- // print : 今天星期一 猴子穿新衣
這段Code每次建新專案都會用到一次,但都懶得紀錄就每次都google
克服自己的懶惰終於把他記起來了 XD
參考
Get Description Attributes From a Flagged Enum
Getting attributes of Enum's value
擴充方法 (C# 程式設計手冊)
今天星期日 猴子過生日
回覆刪除