From 356c47fb0ea1a642784e85c82833141d065bc4bc Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 05 八月 2025 09:22:25 +0800 Subject: [PATCH] feat:动态控制器开发 --- FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs | 69 ++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs index 2f17914..5421781 100644 --- a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs +++ b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs @@ -6,8 +6,45 @@ 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 +65,37 @@ } 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>(this EnumModel<T> model, string name) + where T : struct + { + return model.Items + .Where(it => it.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) + .Select(it => it.Enum) + .FirstOrDefault(); + } } } -- Gitblit v1.9.1