对此问题进行了改进,在添加它们之前,如何在ApplicationModelProvider中查找ActionModel操作的所有现有状态代码?
当前正在调试器中浏览action.Filters[0].StatusCode
,但是无法访问实际代码中的属性。在添加它之前,需要查看所有array列表中API控制器操作的状态码已经存在。
已过滤[0]作为测试
Net Core API: Make ProducesResponseType Global Parameter or Automate
foreach (ControllerModel controller in context.Result.Controllers) { foreach (ActionModel action in controller.Actions) { Type returnType = action.ActionMethod.ReturnType.GenericTypeArguments[0].GetGenericArguments()[0]; action.Filters.Add(new ProducesResponseTypeAttribute(StatusCodes.Status510NotExtended)); action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status200OK)); action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status500InternalServerError)); } }
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.TryAddEnumerable(ServiceDescriptor.Transient<IApplicationModelProvider, ProduceResponseTypeModelProvider>());
...
}
对此问题进行了改进,在添加它们之前,如何在ApplicationModelProvider中找到ActionModel操作的所有现有状态代码?当前正在查看action.Filters [0] ....
首先强制转换为ProducesResponseTypeAttribute,然后获取StatusCode参见下面的代码,