獲取列舉型別的描述description
阿新 • • 發佈:2019-01-07
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace candel { class Program { static void Main(string[] args) { int x = (int)OrderType.WaitConfirm; string str = Util.GetEnumDesc(typeof(OrderType), x); Console.WriteLine(str); Order o = new Order() { Id = 1, Type = (int)OrderType.Complete }; string str2 = (typeof(OrderType)).GetEnumDesc(o.Type); Console.WriteLine(str2); Console.Read(); } } public class Order { public int Id { set; get; } public int Type { set; get; } } public enum OrderType { /// <summary> /// 等待使用者付款 /// </summary> [Description("等待使用者付款")] WaitPay = 0, /// <summary> /// 等待商家發貨 /// </summary> [Description("等待商家發貨")] WaitSend = 1, /// <summary> /// 等待使用者確認收貨 /// </summary> [Description("等待使用者確認收貨")] WaitConfirm = 2, /// <summary> /// 訂單完成 /// </summary> [Description("訂單完成")] Complete = 3 } public static class Util { /// <summary> /// 根據值得到中文備註 /// </summary> /// <param name="e"></param> /// <param name="value"></param> /// <returns></returns> public static String GetEnumDesc(this Type e, int? value) { FieldInfo[] fields = e.GetFields(); for (int i = 1, count = fields.Length; i < count; i++) { if ((int)System.Enum.Parse(e, fields[i].Name) == value) { DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])fields[i]. GetCustomAttributes(typeof(DescriptionAttribute), false); if (EnumAttributes.Length > 0) { return EnumAttributes[0].Description; } } } return ""; } } }