You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.6 KiB
77 lines
2.6 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Wood.Util
|
|
{
|
|
public static partial class Extensions
|
|
{
|
|
#region 枚举成员转成dictionary类型
|
|
/// <summary>
|
|
/// 转成dictionary类型
|
|
/// </summary>
|
|
/// <param name="enumType"></param>
|
|
/// <returns></returns>
|
|
public static Dictionary<int, string> EnumToDictionary(this Type enumType)
|
|
{
|
|
Dictionary<int, string> dictionary = new Dictionary<int, string>();
|
|
Type typeDescription = typeof(DescriptionAttribute);
|
|
FieldInfo[] fields = enumType.GetFields();
|
|
int sValue = 0;
|
|
string sText = string.Empty;
|
|
foreach (FieldInfo field in fields)
|
|
{
|
|
if (field.FieldType.IsEnum)
|
|
{
|
|
sValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)!);
|
|
object[] arr = field.GetCustomAttributes(typeDescription, true);
|
|
if (arr.Length > 0)
|
|
{
|
|
DescriptionAttribute da = (DescriptionAttribute)arr[0];
|
|
sText = da.Description;
|
|
}
|
|
else
|
|
{
|
|
sText = field.Name;
|
|
}
|
|
dictionary.Add(sValue, sText);
|
|
}
|
|
}
|
|
return dictionary;
|
|
}
|
|
#endregion
|
|
|
|
#region 获取枚举的描述
|
|
/// <summary>
|
|
/// 获取枚举值对应的描述
|
|
/// </summary>
|
|
/// <param name="enumType"></param>
|
|
/// <returns></returns>
|
|
public static string GetDescription(this System.Enum enumType)
|
|
{
|
|
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();
|
|
}
|
|
#endregion
|
|
|
|
#region 根据值获取枚举的描述
|
|
public static string GetDescriptionByEnum<T>(this object obj)
|
|
{
|
|
var tEnum = System.Enum.Parse(typeof(T), obj.ToString()??"") as System.Enum;
|
|
var description = tEnum!.GetDescription();
|
|
return description;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
|