.net5 swagger 枚举注释

网友投稿 711 2022-10-26

-5 swagger 枚举注释

-5 swagger 枚举注释

public class EnumSchemaFilter : ISchemaFilter { public void Apply(OpenApiSchema model, SchemaFilterContext context) { if (context.Type.IsEnum) { StringBuilder stringBuilder = new StringBuilder(); Enum.GetNames(context.Type) .ToList() .ForEach(name => { Enum e = (Enum)Enum.Parse(context.Type, name); var data = $"{name}({e.GetDesc()})={Convert.ToInt64(Enum.Parse(context.Type, name))}"; stringBuilder.AppendLine(data); }); model.Description = stringBuilder.ToString(); model.Type = context.Type.Name; model.Format = context.Type.Name; } } }public static class EnumExtensions { ///

/// 获取枚举信息(枚举名称、描述、值) /// /// /// public static string GetEnumDesc(this Enum value) { var type=value.GetType(); var names = Enum.GetNames(type).ToList(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo item in fields) { if (!names.Contains(item.Name)) { continue; } if (value.ToString() != item.Name) { continue; } DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])item. GetCustomAttributes(typeof(DescriptionAttribute), false); if (EnumAttributes.Length > 0) { return EnumAttributes[0].Description; } else { return ""; } } return ""; } }

注入

public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication2", Version = "v1" }); c.SchemaFilter(); }); }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Androwarn 另一个静态代码分析器的恶意Android应用程序
下一篇:Flexx 是一个纯 Python 语言编写的桌面和web应用程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~