首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSwag生成重复类型

NSwag生成重复类型
EN

Stack Overflow用户
提问于 2017-09-17 02:42:07
回答 1查看 3.5K关注 0票数 2

我使用NSwag SwaggerToCSharpClientGenerator来生成请求和响应类以及枚举。

我有一些Web API方法,它们共享相同的枚举作为参数或请求对象的一部分。当我运行枚举API时,它多次生成相同的枚举定义,但命名为Enum1、Enum2、Enum3、ResponseClassEnum。

我可以配置NSwag (或Swashbuckle),只生成一个枚举吗?

我的NSwag代码如下所示:

代码语言:javascript
复制
   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);

我在这里放了混淆的swagger.json - https://pastebin.com/hT5ySZub

从混淆的swagger.json生成的输出在这里- https://pastebin.com/e0AYJWer在输出中,类型DupEnum定义为: DupEnum、DupEnum2、DupEnum3和TypeBDupEnum。

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 22:47:19

您可能正在使用Swashbuckle生成swagger规范:问题是Swashbuckle没有引用枚举,而是重复它们-这就是为什么会多次生成它们(参见:https://github.com/RSuter/NJsonSchema/issues/17)。

如果规范是使用NSwag生成的,则使用特殊属性(x-schema)引用枚举,并且生成的代码不包含任何重复项。

根本的问题是Swagger规范-它不允许在原始参数中引用枚举...我甚至不确定这个问题是否已经在OpenAPI 3中得到了解决。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46257267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档