using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace WMS.Util
{
public static class FuncEnum
{
///
/// 获取枚举名称、值集合
///
///
///
public static Dictionary ToDicByValue(this Type enunType)
{
Dictionary dicEnums = new Dictionary();
var strList = Enum.GetNames(enunType).ToList();
foreach (string key in strList)
{
string val = Enum.Format(enunType, Enum.Parse(enunType, key), "d");
dicEnums.Add(int.Parse(val), key);
}
return dicEnums;
}
///
/// 获取枚举名称、描述集合
///
///
///
public static Dictionary ToDicByDescription(this Type enunType)
{
Dictionary dicEnums = new Dictionary();
foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public))
{
object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
{
dicEnums.Add(field.Name, ((DescriptionAttribute)attrs[0]).Description);
}
}
return dicEnums;
}
///
/// 获取枚举名称、描述集合
///
///
///
public static string ToDicByDescription(this Type enunType,string enumValue)
{
Dictionary dicEnums = new Dictionary();
var descValue = "";
foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public))
{
object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
{
if (field.Name == enumValue)
{
descValue = ((DescriptionAttribute) attrs[0]).Description;
break;
}
}
}
return descValue;
}
///
/// 获取枚举描述
///
///
///
public static string ToStringByDesc(this Enum enumValue)
{
string value = enumValue.ToString();
FieldInfo field = enumValue.GetType().GetField(value);
object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs.Length == 0)
return value;
DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
return descriptionAttribute.Description;
}
///
/// 获取枚举名称、值、描述集合
///
///
///
public static List> EnumToTuple(this Type enunType)
{
List> tuples = new List>();
foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public))
{
object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
string description = string.Empty;
if (attrs != null && attrs.Length > 0)
description=((DescriptionAttribute)attrs[0]).Description;
string val = Enum.Format(enunType, Enum.Parse(enunType, field.Name), "d");
tuples.Add(new Tuple(field.Name,val, description));
}
return tuples;
}
}
}