using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Reflection;
namespace ConsoleApplication_Enum
{
class Program
{
static void Main(string[] args)
{
//普通枚举
Console.WriteLine(JsonConvert.SerializeObject(Program.GetEnumList<Love>()));
//特性枚举
Console.WriteLine(JsonConvert.SerializeObject(GetTypeDict()));
Console.WriteLine(JsonConvert.SerializeObject(GetTypeList()));
Console.ReadKey();
}
/// <summary>
/// 获取一个枚举值的中文描述
/// </summary>
/// <param name="obj">枚举值</param>
/// <returns></returns>
public static string GetEnumDescription(Enum obj)
{
FieldInfo fi = obj.GetType().GetField(obj.ToString());
DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return arrDesc[0].Description;
}
/// <summary>
/// 获取枚举的值与特性说明
/// </summary>
/// <returns></returns>
public static Dictionary<int, string> GetTypeDict()
{
Dictionary<int, string> dict = new Dictionary<int, string>();
Type t = typeof(Like);
Array arrays = Enum.GetValues(t);
for (int i = 0; i < arrays.LongLength; i++)
{
Like tmp = (Like)arrays.GetValue(i);
string Description = GetEnumDescription(tmp);
dict.Add((int)tmp, Description);
}
return dict;
}
/// <summary>
/// 获取枚举的值与特性说明 以 特定的 对象 结构显示
/// </summary>
/// <returns></returns>
public static object GetTypeList()
{
List<object> dict = new List<object>();
Type t = typeof(Like);
Array arrays = Enum.GetValues(t);
for (int i = 0; i < arrays.LongLength; i++)
{
Like tmp = (Like)arrays.GetValue(i);
string Description = GetEnumDescription(tmp);
dict.Add(new { key = tmp, value = Description });
}
return dict;
}
static List<object> GetEnumList<T>()
{
List<object> list = new List<object>();
foreach (var item in Enum.GetValues(typeof(T)))
{
list.Add(new { value = item, name = Enum.GetName(typeof(T), item) });
}
return list;
}
}
/// <summary>
/// 中文枚举
/// </summary>
public enum Love : byte
{
不知道,
喜欢,
很喜欢,
爱,
神经病
}
/// <summary>
/// 特性枚举
/// </summary>
public enum Like : int
{
[Description("不知道")]
v0,
[Description("喜欢")]
v1,
[Description("很喜欢")]
v2,
[Description("爱")]
v3,
[Description("神经病")]
v4
}
}
示例用到 Newtonsoft 为了展示