using Microsoft.CodeAnalysis;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
namespace ConsoleApp10
{
public static class Program
{
public static void Main(string[] args)
{
// 将带有描述的枚举转换为 List<KeyValue>
List<KeyValue> list = EnumToList<DaysOfWeek>();
}
/// <summary>
/// 将枚举转化成列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<KeyValue> EnumToList<T>() where T : Enum
{
return Enum.GetValues(typeof(T))
.Cast<T>()
.Select(x => new KeyValue
{
key = Convert.ToInt32(x),
name = x.GetDescription(),
})
.ToList();
}
/// <summary>
/// 获得枚举的description
/// </summary>
/// <param name="eum">枚举</param>
/// <returns>描述</returns>
public static string GetDescription(this Enum eum)
{
var type = eum.GetType(); // 先获取这个枚举的类型
var field = type.GetField(eum.ToString()); // 通过这个类型获取到值
var obj = (DescriptionAttribute)field.GetCustomAttribute(typeof(DescriptionAttribute)); // 得到特性
return obj?.Description;
}
}
// 定义一个枚举类型,带有描述
public enum DaysOfWeek
{
[Description("星期天")]
Sunday,
[Description("星期一")]
Monday,
[Description("星期二")]
Tuesday,
[Description("星期三")]
Wednesday,
[Description("星期四")]
Thursday,
[Description("星期五")]
Friday,
[Description("星期六")]
Saturday
}
// 定义 KeyValue 类
public class KeyValue
{
public int key { get; set; }
public string name { get; set; }
}
}
c# 枚举转化成list
最新推荐文章于 2023-12-10 21:05:12 发布