我正在使用 NSwag SwaggerToCSharpClientGenerator 来生成请求和响应类和枚举。
我有一些 Web API 方法共享相同的枚举作为参数或请求对象的一部分。当我运行 NSwag API 时,它多次生成相同的枚举定义,但命名为 Enum1、Enum2、Enum3、ResponseClassEnum。
我可以配置 NSwag(或 Swashbuckle)以便只生成一个枚举吗?
我的 NSwag 代码如下所示:
var document = SwaggerDocument.FromUrlAsync(
"http://localhost:5003/swagger/v1/swagger.json").Result;
var settings = new SwaggerToCSharpClientGeneratorSettings();
settings.GenerateClientClasses = false;
settings.CSharpGeneratorSettings.Namespace = "My.Interface";
settings.CSharpGeneratorSettings.ArrayType = "List";
settings.AdditionalNamespaceUsages = new string[] { "System.Collections.Generic" };
settings.GenerateExceptionClasses = false;
var generator = new SwaggerToCSharpClientGenerator(document, settings);
var code = generator.GenerateFile();
File.WriteAllText("Swagger.MyApi.cs", code);
Run Code Online (Sandbox Code Playgroud)
我把混淆的 swagger.json 放在这里 - https://pastebin.com/hT5ySZub
从混淆的 swagger.json 生成 的输出在这里 - https://pastebin.com/e0AYJWer在输出中,DupEnum 类型定义为以下类型:DupEnum、DupEnum2、DupEnum3 和 TypeBDupEnum。
您可能正在使用 swashbuckle 生成 swagger 规范:问题在于 Swashbuckle 不引用枚举而是重复它们 - 这就是它们被多次生成的原因(请参阅:https : //github.com/RSuter/NJsonSchema/issues/17) .
如果规范是使用 NSwag 生成的,那么枚举将使用特殊属性(x-schema)进行引用,并且生成的代码不包含任何重复项。
根本问题是 Swagger 规范 - 它不允许在原始参数中引用枚举......我什至不确定这是否已在 OpenAPI 3 中修复。
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |