我有一个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>