using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace 命名空间名称
{
public class EnumHelper
{
//引用using System.ComponentModel;
//安装包System.ComponentModel.Annotations
/// <summary>
/// 获取当前枚举描述
/// EnumHelper.GetEnumDescription(Enum.enumValue)
/// </summary>
/// <param name="enumValue"></param>
/// <returns></returns>
public static string GetEnumDescription<T>(T enumValue)
{
Type type = enumValue.GetType();
MemberInfo[] memInfo = type.GetMember(enumValue.ToString());
if (null != memInfo && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (null != attrs && attrs.Length > 0)
return ((DescriptionAttribute)attrs[0]).Description;
}
return enumValue.ToString();
}
/// 根据 Description 的值获取枚举值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="description"></param>
/// <returns></returns>
public static T GetEnumByDescription<T>(string description)
{
FieldInfo[] fields = typeof(T).GetFields();
foreach (FieldInfo field in fields)
{
object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs.Length > 0 && (objs[0] as DescriptionAttribute).Description == description)
{
return (T)field.GetValue(null);
}
}
return default(T);
}
}
}
C# enum工具类 EnumHelper.cs
于 2022-08-26 10:21:18 首次发布