From 22f443f24ea48e8bf3940d0432f00edbb0a86c2f Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 11 九月 2025 10:55:49 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs | 83 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 0 deletions(-) diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs index 2f17914..87302ab 100644 --- a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs +++ b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs @@ -1,13 +1,51 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { + /// <summary> + /// 鏋氫妇宸ュ叿 + /// </summary> public static class EnumUtils { + /// <summary> + /// 鑾峰彇妯″瀷 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> + public static async Task<EnumModel<T>> GetModel<T>() + where T : struct + { + var type = typeof(T); + var model = new EnumModel<T>(); + var xmlDoc = await XmlDocUtils.GetXmlDocAsync(); + var xmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(type, xmlDoc); + model.Name = type.Name; + model.Description = xmlDocMember?.Summary; + + foreach (var enumValue in Enum.GetValues(type)) + { + var item = new EnumModelItem<T>(); + item.Name = enumValue.ToString(); + item.Value = (int)enumValue; + item.Enum = (T)enumValue; + var enumMember = type.GetMember(enumValue.ToString()).FirstOrDefault(); + var enumXmlDocMember = await XmlDocUtils.GetXmlDocMemberAsync(enumMember, xmlDoc); + item.Description = enumXmlDocMember?.Summary; + model.Items.Add(item); + } + return model; + } + + /// <summary> + /// 鑾峰彇妯″瀷 + /// </summary> + /// <param name="type"></param> + /// <returns></returns> public static async Task<EnumModel> GetModel(this Type type) { var model = new EnumModel(); @@ -28,5 +66,50 @@ } return model; } + + /// <summary> + /// 鑾峰彇鎻忚堪 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="model"></param> + /// <param name="t"></param> + /// <returns></returns> + public static string GetDescription<T>(this EnumModel<T> model, T t) + where T : struct + { + return model.Items + .Where(it => it.Enum.Equals(t)) + .Select(it => it.Description) + .FirstOrDefault(); + } + + /// <summary> + /// 鑾峰彇鏋氫妇 + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="model"></param> + /// <param name="name"></param> + /// <returns></returns> + public static T GetEnum<T>(string name) + where T : struct, Enum + { + name = Enum.GetNames<T>().FirstOrDefault(it => it.Equals(name, StringComparison.OrdinalIgnoreCase)); + return Enum.Parse<T>(name); + } + + /// <summary> + /// 鑾峰彇鑷畾涔夌壒鎬� + /// </summary> + /// <typeparam name="TEnum"></typeparam> + /// <typeparam name="TAttribute"></typeparam> + /// <param name="enum"></param> + /// <returns></returns> + public static TAttribute GetCustomAttribute<TEnum, TAttribute>(this TEnum @enum) + where TEnum : struct + where TAttribute : Attribute + { + + return typeof(TEnum).GetMember(@enum.ToString())[0].GetCustomAttribute<TAttribute>(); + } } } -- Gitblit v1.9.1