查找控制器 ActionModel 的 API 个状态代码

Find API Status Codes for Controller ActionModel

改进这个问题,我如何在添加它们之前在 ApplicationModelProvider 中找到 ActionModel 操作的所有现有状态代码?

目前正在调试器中查看 action.Filters[0].StatusCode,但无法访问实际代码中的 属性。 在添加它之前,需要查看所有 数组 列表中 API 控制器操作已经存在的状态代码。

作为测试进行了过滤[0]

    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>());
    ...
}

首先转换为ProducesResponseTypeAttribute,并获取StatusCode 请参阅下面的代码,

foreach (var filter in action.Filters)
{
    if (filter.GetType() == typeof(ProducesResponseTypeAttribute))
    {
         var producesResponseTypeAttribute = (filter as ProducesResponseTypeAttribute)
         var statusCode = producesResponseTypeAttribute.StatusCode;