一、创建EnumHelper类
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace Common.EnumHepler
{
public static class EnumHelper
{
private static string GetEnumDescription<TEnum>(this TEnum eunmObj)
{
//获取枚举对象的枚举类型
var type = eunmObj.GetType();
//通过反射获取该枚举类型的所有属性
var fieldInfos = type.GetFields();
foreach (var field in fieldInfos)
{
//不是参数obj,就直接跳过
if (field.Name != eunmObj.ToString())
{
continue;
}
//取出参数obj的自定义属性
if (!field.IsDefined(typeof(DescriptionAttribute), true)) continue;
var descriptionAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute),
true)[0] as DescriptionAttribute;
if (descriptionAttribute != null)
return descriptionAttribute.Description;
}
return eunmObj.ToString();
}
/// <summary>
/// 枚举转Dictionary
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <returns></returns>
public static IList<EnumResult> EnumToDictionary<TEnum>()
{
var enumType = typeof(TEnum);
return (from object obj in Enum.GetValues(enumType)
select new EnumResult
{
Text = GetEnumDescription(obj),
Value = (int)obj
}).ToList();
}
/// <summary>
/// 获取枚举描述
/// </summary>
/// <param name="eunmObj"></param>
/// <returns></returns>
public static string GetDescription(this Enum eunmObj)
{
return GetEnumDescription(eunmObj);
}
}
public class EnumResult
{
public string Text { get; set; }
public int Value { get; set; }
}
}
二、调用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Common.EnumHepler;
namespace API.Controllers
{
public class EnumController
{
public void GetDescription()
{
string manDesc = EnumHelper.GetDescription(Sex.man);
//manDesc = "男"
string womamDesc = EnumHelper.GetDescription(Sex.womam);
//womamDesc = "女"
}
public void EnumToDictionary()
{
IList<EnumResult> obj = EnumHelper.EnumToDictionary<Sex>();
}
}
public enum Sex
{
[Description("男")]
man = 1,
[Description("女")]
womam
}
}
