using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace WMS.BZModels { public static class Extensions { #region 获取枚举的描述 /// /// 获取枚举值对应的描述 /// /// /// public static string GetDescription(this System.Enum enumType) { var value = enumType.ToString(); if (value.IndexOf(',') > 0) { var lists = value.Split(','); var strings = new List(); foreach (var item in lists) { //var itemenum = (WCS.Entity.Protocol.Station.StationStatus)Enum.Parse(typeof(StationStatus), item); FieldInfo itemEnumInfo = enumType.GetType().GetField(item.Trim()); if (itemEnumInfo != null) { DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])itemEnumInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); if (EnumAttributes.Length > 0) { strings.Add(EnumAttributes[0].Description); } } else { strings.Add(item); } } return string.Join(",", strings.ToArray()); } else { FieldInfo EnumInfo = enumType.GetType().GetField(enumType.ToString()); if (EnumInfo != null) { DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])EnumInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); if (EnumAttributes.Length > 0) { return EnumAttributes[0].Description; } } return enumType.ToString(); } } /// /// 将枚举转为集合 /// /// /// public static List EnumToList() { List list = new List(); foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity m = new EnumEntity(); object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); if (objArr != null && objArr.Length > 0) { DescriptionAttribute da = objArr[0] as DescriptionAttribute; m.text = da.Description; } else { m.text = e.ToString(); } m.id = Convert.ToInt32(e); list.Add(m); } return list; } public static List EnumToListDesc() { List list = new List(); foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity2 m = new EnumEntity2(); object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); if (objArr != null && objArr.Length > 0) { DescriptionAttribute da = objArr[0] as DescriptionAttribute; m.text = da.Description; m.id = da.Description; } //else //{ // m.text = e.ToString(); //} //m.id = da.Description; list.Add(m); } return list; } public static List EnumToListIdDesc() { List list = new List(); foreach (var e in Enum.GetValues(typeof(T))) { EnumEntity2 m = new EnumEntity2(); object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true); if (objArr != null && objArr.Length > 0) { DescriptionAttribute da = objArr[0] as DescriptionAttribute; m.text = da.Description; } //else //{ // m.text = e.ToString(); //} m.id = e.ToString(); list.Add(m); } return list; } #endregion } /// /// 枚举实体 /// public class EnumEntity { /// /// 枚举对象的值 /// public int id { set; get; } /// /// 枚举的描述 /// public string text { set; get; } } public class EnumEntity2 { /// /// 枚举对象的值 /// public string id { set; get; } /// /// 枚举的描述 /// public string text { set; get; } } }