列舉擴充套件方法獲取列舉Description
阿新 • • 發佈:2019-01-06
列舉擴充套件方法
1 /// <summary> 2 /// 擴充套件方法,獲得列舉的Description 3 /// </summary> 4 /// <param name="value">列舉值</param> 5 /// <param name="nameInstend">當列舉沒有定義DescriptionAttribute,是否用列舉名代替,預設使用</param> 6 /// <returns>列舉的Description</returns> 7 public static string GetDescription(this Enum value, bool nameInstend = true) 8 { 9 Type type = value.GetType(); 10 string name = Enum.GetName(type, value); 11 if (name==null) 12 { 13 return null; 14 } 15 FieldInfo field = type.GetField(name); 16 DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; 17 if (attribute==null&&nameInstend==true) 18 { 19 return name; 20 } 21 return attribute==null? null :attribute.Description; 22 }
列舉類
1 public enum WeekDay 2 { 3 [Description("星期一")] 4 one=1, 5 [Description("星期二")] 6 two =2, 7 three=3, 8 }
測試
//列舉測試 WeekDay w1 = WeekDay.one; string strw1 = w1.GetDescription();// strw1= “星期一” WeekDay w3 = WeekDay.three; string strw2 = w3.GetDescription();// strw3=“three”