using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { public class EnumSchemaFilter : ISchemaFilter { public void Apply(OpenApiSchema schema, SchemaFilterContext context) { if (context.Type.IsEnum && context.Type.FullName.Contains("FlexJobApi.")) { // 枚举类型的描述(来自枚举本身的注释) var model = EnumUtils.GetModel(context.Type).Result; var items = model.Items .Select(it => $"{it.Name ?? it.Value.ToString()}-{it.Value}-{it.Description ?? "没写注释"}") .SplitJoin(","); schema.Description = $"{model.Description ?? "没写注释"}|{items}"; } } } }