我有多个类(超过100个)从我的基类BaseController继承。我所有的类都是逻辑和模型,但是格式的响应(200、404、500,...)始终相同。
但是当我从基类继承时,在庞大的文档中,我看到了端点,但是响应的详细信息不存在。我该怎么办?
public class BaseController : Controller
{
public BaseController() {}
[Produces("application/json")]
[SwaggerResponse(StatusCodes.Status200OK)]
[SwaggerResponse(StatusCodes.Status404NotFound)]
protected async Task<IActionResult> Get(int id)
{
...
}
}
public class MyController : BaseController
{
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id)
{
return await base.Get(id).ConfigureAwait(false);
}
}
答案 0 :(得分:0)
就像@Helder Sepulveda说的那样,这超越了小巧。
我认为您可以使用IActionModelConvention
模拟继承动作属性。
像这样使用Action.Filters
public class ActionMethodConvention : IActionModelConvention
{
public void Apply(ActionModel action)
{
var actonBaseResponses = new List<SwaggerResponseAttribute>();//some code to get baseAction reflections
foreach (var attr in actonBaseResponses)
{
action.Filters.Add(new Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute(actonBaseResponses.StatusCode));
}
}