列舉類型 Enum 在 C# 很常用的一種類型,所允許的型別必須是byte、sbyte、short、ushort、int、uint、long、ulong,在使用上沒特別指定的話基本類型是 int,對我自己來說在程式中使用 Enum 而不用 int 的好處是 Code 閱讀上比較清晰,舉例來說在閱讀代碼時第一段代碼使用 Enum 更容易讓人好懂些
if (code == ResponseCode.OK) //todo if (code2 == 500) // 500是蝦米作法 : 擴充方法 (Extension Method) + 反射 (Reflection)
針對 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# 程式設計手冊)
今天星期日 猴子過生日
回覆刪除