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