From cbdbf24839609d453a6f9bceba4129fb027f0895 Mon Sep 17 00:00:00 2001 From: falcon <9504402@qq.com> Date: Wed, 1 Apr 2020 12:54:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Swagger=E6=9E=9A=E4=B8=BE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Falcon.Extend/SwaggerGenOptionsExtend.cs | 22 ++++++++++++++++++++++ Falcon.Extend/SwaggerXmlEnumFilter.cs | 21 +++++++++++++++------ 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 Falcon.Extend/SwaggerGenOptionsExtend.cs diff --git a/Falcon.Extend/SwaggerGenOptionsExtend.cs b/Falcon.Extend/SwaggerGenOptionsExtend.cs new file mode 100644 index 0000000..df8a038 --- /dev/null +++ b/Falcon.Extend/SwaggerGenOptionsExtend.cs @@ -0,0 +1,22 @@ +using Microsoft.Extensions.DependencyInjection; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Falcon.Extend +{ + /// + /// SwaggerGenOptions扩展 + /// + public static class SwaggerGenOptionsExtend + { + /// + /// 增加xml文件枚举说明支持 + /// + /// SwaggerGenOptions选项 + /// XML文件路径 + /// SwaggerGenOptions + public static SwaggerGenOptions AddXmlEnumEnable(this SwaggerGenOptions options,string xmlPath) { + options.DocumentFilter(xmlPath); + return options; + } + } +} diff --git a/Falcon.Extend/SwaggerXmlEnumFilter.cs b/Falcon.Extend/SwaggerXmlEnumFilter.cs index 3bb0e46..bea18b8 100644 --- a/Falcon.Extend/SwaggerXmlEnumFilter.cs +++ b/Falcon.Extend/SwaggerXmlEnumFilter.cs @@ -17,7 +17,10 @@ namespace Falcon.Extend { private readonly XPathNavigator _xmlNavigator; - public static List AllTypes { get; set; } + /// + /// 存放程序集中的所有枚举类型 + /// + public static List AllTypes { get; set; } = null; /// /// 通过提供应用程序文档生成枚举说明 @@ -26,12 +29,18 @@ namespace Falcon.Extend public SwaggerXmlEnumFilter(string xmlPath) { _xmlNavigator = new XPathDocument(xmlPath).CreateNavigator(); - if(AllTypes == null) { - AllTypes = new List(); - foreach(var ass in AppDomain.CurrentDomain.GetAssemblies()) { - AllTypes.AddRange(ass.GetTypes().Where(m => m.IsEnum)); - } + AllTypes = AllTypes ?? GetEnumTypes(); + } + + /// + /// 初始化程序集中所有枚举类型 + /// + public virtual List GetEnumTypes() { + var types = new List(); + foreach(var ass in AppDomain.CurrentDomain.GetAssemblies()) { + types.AddRange(ass.GetTypes().Where(m => m.IsEnum)); } + return types; } public void Apply(OpenApiDocument swaggerDoc,DocumentFilterContext context) {