生成的Swagger文档中未显示Expression Parameter

时间:2018-10-19 15:25:02

标签: asp.net-core swagger swashbuckle

我有一个Controller,其参数类型为Expression<Foo, bool>,名称为query,但是该参数未显示在生成的swagger.json文件中。相反,会显示很多(> 1000个)具有以下名称的参数:

  • Body.CanReduce
  • ReturnType.IsGenericMethodParameter
  • Type.IsGenericType

我想告诉SwaggerGen将我的参数显示为字符串。如果可以使用过滤器,那将是我的首选方式,但是属性也可以。

我已经尝试使用IOperationFilter,但由于operation.Parameters似乎甚至没有名称为query的参数,因此无法使用。

    private static readonly Type _expressionType = typeof(Expression);

    public void Apply(Operation operation, OperationFilterContext context)
    {
        foreach (var parameter in context.ApiDescription.ActionDescriptor.Parameters)
        {
            if(_expressionType.IsAssignableFrom(parameter.ParameterType))
            {
                // The parameter is found ...
                var expressionParameter = operation.Parameters.FirstOrDefault(p => p.Name == parameter.Name);
                if (expressionParameter != null)
                    Debugger.Break(); // ... but is not in the operation.Parameters collection although the >1000 mentioned above are.
            }
        }
    }

P.S。致任何感兴趣的人:我正在使用自定义ModelBinder和System.Linq.Dynamic来将查询字符串解析为Expression<Foo, bool>

0 个答案:

没有答案