Swagger使用AllOf时无法生成文档

问题描述 投票:0回答:1

我正在使用 ASP.NET Core 8 Web API 和 Swagger。

当我尝试使用

UseAllOfForInheritance
来生成带有
allOf
的代码时,使用以下代码构建 swagger:

builder.Services.AddSwaggerGen(
        (opt) =>
        {
            opt.SupportNonNullableReferenceTypes();

            opt.UseAllOfForInheritance();
            opt.SelectDiscriminatorNameUsing(type => type.Name);
})

它向我显示了一个错误,表明它期望一个枚举值,即使请求或其响应中没有枚举,而 swagger 正在尝试为其生成元素。

System.ArgumentException:提供的类型必须是枚举。 (参数'枚举类型')

我如何追踪这个问题以了解是什么原因造成的?除了类全名之外,异常不会告诉我属性名称或它试图生成的内容的任何描述。

我正在尝试为其生成 swagger 文档的 DTO 示例:

public class SeriesBase
{
    public long Id { get; set; }

    // DX: Index
    public required string Name { get; set; }

    public long? CategoryId { get; set; }
}

public class SeriesTable : SeriesBase, ITrackCreate, ITrackUpdate
{
    #region ITrack Members

    public DateTime CreatedAt { get; set; } = UtcNow;
    public DateTime UpdatedAt { get; set; } = UtcNow;

    #endregion
}
c# swagger asp.net-core-webapi openapi
1个回答
0
投票

我可以使用下面的代码成功生成文档。如果您对此问题有任何疑问,您可以查看官方链接

builder.Services.AddSwaggerGen(c =>
{
    c.SupportNonNullableReferenceTypes();
    c.UseAllOfForInheritance();
    c.SelectDiscriminatorNameUsing(type => type.Name);
    c.SelectSubTypesUsing(baseType =>
    {
        return typeof(Program).Assembly.GetTypes().Where(type => type.IsSubclassOf(baseType));
    });
});

测试结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.