sunpengfei
2025-08-01 a01fa150d1652e32064cf155cb3317618961e230
feat:文档枚举注释添加
2个文件已添加
3个文件已修改
131 ■■■■ 已修改文件
FlexJobApi.Core/FlexJobApi.Core.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/settings.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -2188,6 +2188,36 @@
            <param name="dbContextLocator"></param>
            <returns></returns>
        </member>
        <member name="P:FlexJobApi.Core.EnumModel.Name">
            <summary>
            名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnumModel.Description">
            <summary>
            描述
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnumModel.Items">
            <summary>
            枚举项
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnumModelItem.Name">
            <summary>
            名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnumModelItem.Value">
            <summary>
            值
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.EnumModelItem.Description">
            <summary>
            描述
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.EventBusServiceComponent">
            <summary>
            事件总线
FlexJobApi.Core/Utils/EnumUtils/EnumModel.cs
New file
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    public class EnumModel
    {
        public EnumModel()
        {
            Items = [];
        }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 描述
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// 枚举项
        /// </summary>
        public List<EnumModelItem> Items { get; set; }
    }
    public class EnumModelItem
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 值
        /// </summary>
        public int Value { get; set; }
        /// <summary>
        /// 描述
        /// </summary>
        public string Description { get; set; }
    }
}
FlexJobApi.Core/Utils/EnumUtils/EnumUtils.cs
New file
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    public static class EnumUtils
    {
        public static async Task<EnumModel> GetModel(this Type type)
        {
            var model = new EnumModel();
            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();
                item.Name = enumValue.ToString();
                item.Value = (int)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;
        }
    }
}
FlexJobApi.Core/Utils/SwaggerUtils/EnumSchemaFilter.cs
@@ -18,23 +18,8 @@
            if (context.Type.IsEnum)
            {
                // 枚举类型的描述(来自枚举本身的注释)
                schema.Description ??= GetEnumDescription(context.Type);
                schema.Description = EnumUtils.GetModel(context.Type).Result.ToJson();
            }
        }
        // 获取枚举类型的注释
        private string GetEnumDescription(Type enumType)
        {
            var xmlDoc = XmlDocUtils.GetXmlDocAsync().Result;
            var member = XmlDocUtils.GetXmlDocMemberAsync(enumType, xmlDoc).Result;
            var description = member?.Summary ?? "";
            foreach (var enumValue in Enum.GetValues(enumType))
            {
                var enumMember = enumType.GetMember(enumValue.ToString()).First();
                var enumXmlDocMember = XmlDocUtils.GetXmlDocMemberAsync(enumMember, xmlDoc).Result;
                description += $"{enumValue}-{enumXmlDocMember?.Summary} ";
            }
            return description;
        }
    }
}
FlexJobApi.Core/settings.json
@@ -11,7 +11,8 @@
          "Name": "孙鹏飞"
        }
      }
    ]
    ],
    "EnumToNumber": true
  },
  "CorsAccessorSettings": {
    "WithExposedHeaders": [