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; }
}
}