我在 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]"
}