Swagger 示例的请求正文显示类中的属性,而不是将对象的值格式化为字符串表示形式

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

我在 CreateDto 中引用 SemanticVersion 和 VersionRange 类,这些类是从 NuGet.Versioning 包中引用的。

创建DtoClass:

    [Required]
    public string Name { get; set; }
  
    public SemanticVersion Version { get; set; }

    public VersionRange VersionRange { get; set; }   

我创建了 DtoExample 类,以便在 swagger UI 上显示示例: Dto示例:

public class CreateDtoExample : IExamplesProvider<CreateDto>
{
    /// <inheritdoc/>
    public CreateDto GetExamples()
    {          

       CreateDto createDtoExample = new CreateDto
        {
            Name = "string",
            Version = new SemanticVersion(1, 0, 0),
            VersionRange = new VersionRange(NuGetVersion.Parse("1.0.0"), includeMinVersion: false, NuGetVersion.Parse("2.0.0"), includeMaxVersion: false, null, "[1.0,2.0]")
         }  
           

        return createDtoExample;
    }
}

Swagger UI 使用其属性而不是值来渲染 VersionRange 作为字符串。但是 SeamnticVersion 正确显示了值 格式化为字符串。这两个类都实现了 IFormattable 接口,该接口需要将对象的值格式化为字符串表示形式。

我想将请求正文示例显示为:

{
     "Name": "string",
     "Version": "1.0.0", 
     "VersionRange": "[1.0,2.0]"
   }

    
c# .net-core swagger .net-6.0 swagger-ui
© www.soinside.com 2019 - 2024. All rights reserved.