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) {