Параметр выражения не отображается в сгенерированной документации Swagger - PullRequest
0 голосов
/ 19 октября 2018

У меня есть 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.
            }
        }
    }

PS для всех, кто интересуется: я использую пользовательский ModelBinder и System.Linq.Dynamic для анализа строки запроса в Expression<Foo, bool>

...