From 71d0c92a63f1e26c6ba9634413083de1acaf916c Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期三, 06 八月 2025 11:18:29 +0800 Subject: [PATCH] feat:数据字典类别开发 --- FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs | 77 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) diff --git a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs index 00df62e..fcd9ac2 100644 --- a/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs +++ b/FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs @@ -1,6 +1,7 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; @@ -11,6 +12,35 @@ /// </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> @@ -36,5 +66,52 @@ } 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(); + } + + /// <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