C# .net 遍历枚举和特性(Attribute)
现在我们有一个枚举,我需要获取其枚举名称、值、Description,那么我们可以参照如下操作:
枚举:
/// <summary> /// 岗位审批状态 /// </summary> public enum PostApproveStatus : int { /// <summary> /// 待审核 /// </summary> [Description("待审核")] Wait = 0, /// <summary> /// 审核通过 /// </summary> [Description("审核通过")] Success = 1, /// <summary> /// 审核驳回 /// </summary> [Description("审核驳回")] Fail = 2 }
再来个获取所有信息的model
public class EnumInfo { /// <summary> /// 枚举值 /// </summary> public int Value { get; set; } /// <summary> /// 枚举名 /// </summary> public string Name { get; set; } /// <summary> /// 特性 /// </summary> public string Description { get; set; } }
遍历枚举
/// <summary> /// 获取所有枚举 /// </summary> /// <param name="type"></param> /// <returns></returns> public static List<EnumInfo> GetAllEnums(this Type type) { var result = new List<EnumInfo>(); if (type.IsEnum) { var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public) ?? new FieldInfo[] { }; foreach (var field in fields) { var info = new EnumInfo(); info.Name = field.Name; info.Value = (int)field.GetValue(null); var atts = field.GetCustomAttributes(typeof(DescriptionAttribute), false); info.Description = atts != null && atts.Length > 0 ? ((DescriptionAttribute[])atts)[0].Description : string.Empty; result.Add(info); } } return result; }
调用方法:
var enumList = typeof(PostApproveStatus).GetAllEnums();
这时我们拿到的enumList就是一个EnumInfo的列表,我们就能通过这个列表拿到所有枚举值的所有信息啦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!