【C#】枚举
枚举
public static class CommonEnums { public enum people { /// <summary> ///男人 /// </summary> [Description("男人")] man = 1, /// <summary> /// 女人 /// </summary> [Description("女人")] women = 2, } }
string->枚举
CommonEnums.people en = (CommonEnums.people)Enum.Parse(typeof(CommonEnums.people), "women");
枚举->Dictionary
//使用:生成一个dictionary Dictionary<int, string> dic=CommonEnums.people.man.ToEnumDictionary(); //静态方法 public static class EnumExtension { public static Dictionary<int, string> ToEnumDictionary(this Enum enumT, string category = "") { Type enumType = enumT.GetType(); if (!enumType.IsEnum) throw new Exception("参数不是枚举"); var array = enumType.GetEnumValues(); if (array.Length < 1) return new Dictionary<int, string>(1); Dictionary<int, string> result = new Dictionary<int, string>(array.Length); int[] enumValues = new int[array.Length]; int index = 0; foreach (var item in array) { enumValues[index] = Convert.ToInt32(item); ++index; } var enumNames = enumType.GetEnumNames(); DescriptionAttribute[] descriptions = null; CategoryAttribute[] categorys = null; for (index = 0; index < array.Length; ++index) { FieldInfo fi = enumType.GetField(enumNames[index]); descriptions = fi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[]; if (category != string.Empty) { categorys = fi.GetCustomAttributes(typeof(CategoryAttribute), false) as CategoryAttribute[]; if (categorys != null && categorys.Length > 0) { if (categorys[0].Category != category) { continue; } } } if (descriptions != null && descriptions.Length > 0) { result.Add(enumValues[index], descriptions[0].Description); } else { result.Add(enumValues[index], string.Empty); } } return result; } }
获取枚举描述
//使用 string desc = CommonEnums.people.man.GetDescription(); //方法 public static string GetDescription(this Enum value, bool nameInstend = true) { Type type = value.GetType(); string name = Enum.GetName(type, value); if (name == null) { return null; } FieldInfo field = type.GetField(name); DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; if (attribute == null && nameInstend == true) { return name; } return attribute == null ? null : attribute.Description; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 并发编程 - 线程同步(二)