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