当前位置: 首页 > 知识库问答 >
问题:

为什么Swagger CodeGen 3.0. x使用AllOf[Classname]生成类

章彬郁
2023-03-14

我使用swagger codegen 3.0.21生成C#api客户端。

生成器为所有引用的类创建/模型中以AllOf[Classname]开头的附加类。

为什么Swagger CodeGen会生成这些类?它们的用途是什么?我的隔离也有多个错误。

生成的json的相关更改部分:

"components": {
  "schemas": {
    "MyClass": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "propertyTwo": {
            "type": "integer",
            "format": "int64"
          },
          "propertyThree": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MySecondClass"
              }
            ],
            "nullable": true
          },
          "propertyFour": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MyThirdClass"
              }
            ],
            "nullable": true
          },
          "propertyFive": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyFourthClass"
            },
            "nullable": true
          },
          "propertySix": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
    },
  }
}

MyClass的构造函数生成如下:

public MyClass(long? id = default(long?), long? propertyTwo = default(long?),  propertyThree = default(),  propertyFour = default(), List<MyThirdClass> propertyFive = default(List<MyFourthClass>), bool? propertySix = default(bool?))

如您所见,propertyThree和propertyFour的数据类型只是空白。

共有1个答案

雍阳
2023-03-14

我们遇到了同样的问题。为了生成一个csharp客户端/模型,我们实际上使用 https://github.com/RicoSuter/NSwag/wiki/NSwagStudio 它还为您提供了很多选择,并且确实可以正确生成模型

然而,对于客户端,我们也需要一个java生成器,nswagstudio只支持csharp和typescript。我尝试了@NickSim的建议,作为一种魅力。

 类似资料:
  • 问题内容: 我编写了以下代码来实现Singleton模式: 当我编译此文件时,它应该生成Test.class和Test $ TestHolder.class,但它还会生成Test $ 1.class。这没有道理。那么,为什么以及如何呢? 问题答案: 类需要在中调用私有构造函数。但是它是私有的,实际上不能从另一个类中调用。因此,编译器发挥了作用。它 添加了一个仅知道的新的非私有构造函数!_该构造函数

  • 我正在生成Restendpoint,包括向生成的代码添加Openapi/Swagger注释。 虽然它可以很好地处理基本类型,但我在自定义类方面有一些问题。 现在我有很多自定义类的重复模式条目(使用@Schema(实现=MyClass.class)),但至少需要的信息在那里。然而,我想找到一种方法来删除重复的模式条目,同时保留附加信息。 在一个讨论$ref和缺乏兄弟属性的github问题上,我发现了

  • 本文向大家介绍为什么属性使用className而不是class呢?相关面试题,主要包含被问及为什么属性使用className而不是class呢?时的应答技巧和注意事项,需要的朋友参考一下 class是关键字 js会使用dom.className获取样式名,跟js保持一致

  • 问题内容: 我刚刚用来为我的JPA2实体生成MetaModel。 有人可以解释为什么在这种情况下将属性标记为易失性吗? 谢谢。 问题答案: 设置静态变量的线程可能与用于访问它们的线程不同,因此需要使用修饰符在所有线程之间同步内存。 没有的情况是这样的: 在初始化JPA提供程序之前,您的线程将访问变量,并获取静态字段 JPA提供程序是从其他线程初始化的,并将静态字段设置为非空值 您的线程再次访问静态

  • 我正在学习Java 1.8中的CompletableFuture,在理解所有代码时遇到了困难。主线程似乎不会等待任何可完成的未来完成。 看见https://github.com/nurkiewicz/reactive/blob/master/src/test/java/be/more/reactive/S03_AllOf.java例如,我正在测试。 测试作业在打印任何结果之前完成。 有两种(丑陋的

  • 我正在使用VS2022,。NET 6,C#10,在项目范围内启用了可为空上下文。 变量正在解析为可为空的类型