【发布时间】:2022-01-02 09:50:45
【问题描述】:
通过下面的代码,我试图提及替代模式;与响应的类型共享相同的接口。
Startup.cs
services.AddSwaggerGen(c =>
{
c.UseOneOfForPolymorphism();
});
app.UseSwagger();
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
模型
public interface IOutput
{
string Discriminator { get; }
}
public class OutputA : IOutput
{
public string Discriminator => GetType().Name;
public string PropA { get; set; }
}
public class OutputB : IOutput
{
public string Discriminator => GetType().Name;
public string PropB { get; set; }
}
控制器
[HttpGet]
[ProducesResponseType(typeof(IOutput), StatusCodes.Status200OK)]
public IActionResult Get()
{
return Ok();
}
我希望 OutputA 和 OutputB 两种类型都将被列为返回类型,
但只提到了IOutput:
或者,如果我将 IOutput 从 interface 更改为 class 或 abstract class,则 OutputA 和 OutputB 将被列为有效返回类型:
是否由于 RESTFul/API 标准而不受支持?
或者这可以实现吗?
这是一个.NET Core 2.2 项目,使用Swashbuckle.AspNetCore v6.2.3
【问题讨论】:
标签: asp.net-core asp.net-web-api swagger openapi swashbuckle