为什么 openapi-generator 创建 InlineObjects?

Why does openapi-generator create InlineObjects?

我正在使用

https://github.com/OpenAPITools/openapi-generator

为我的 API 创建一个客户端。它大部分工作正常,但是生成器创建了很多 InlineObject 类型来封装参数,这些参数包括任何复杂的类型,例如 DictionaryIFormFileStream

例如,

public async Task<ApiResponse<FileUploadResponseAPIModel>> MyApiClientMethod(InlineObject11 inlineObject11 = default(InlineObject11))
    {
    }

其中 InlineObject11 定义为

public partial class InlineObject11 : IEquatable<InlineObject11>, IValidatableObject
{
    
    [JsonConstructorAttribute]
    protected InlineObject11() { }
    
    public InlineObject11(Stream rebalanceTradeFile = default(Stream))
    {
        // to ensure "rebalanceTradeFile" is required (not null)
        this.RebalanceTradeFile = rebalanceTradeFile ?? throw new ArgumentNullException("rebalanceTradeFile is a required property for InlineObject11 and cannot be null");
    }

    [DataMember(Name = "RebalanceTradeFile", IsRequired = true, EmitDefaultValue = false)]
    public System.IO.Stream RebalanceTradeFile { get; set; }

这有什么意义?为什么不生成客户端以获取 Stream rebalanceTradeFile 而不是将其包装到 InlineObject 中?我该如何解决?这破坏了我的一堆使用旧版本生成的客户端的工具。

内联对象是从内联模式创建的,例如https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml#L15-L24 是一个架构,其中为 MIME 类型 application/json.

的负载定义了 2 个内联属性

为避免 OpenAPI 生成器自动为内联模式生成模型,可以单独定义模型 (example) 并改用 $ref

        application/json:
          schema:
            $ref: '#/components/schemas/Pet'