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}";
|
}
|
}
|
}
|
}
|