ASP WebAPI泛型List可选参数

Den*_*zak 55 asp.net-mvc asp.net-web-api

我真的很挣这个.我需要一个用于Get方法的通用列表参数,但它必须是可选的.我这样做了:

public dynamic Get(List <long> ManufacturerIDs = null)
Run Code Online (Sandbox Code Playgroud)

不幸的是在运行时我得到错误:

'FormatterParameterBinding'不支持可选参数'ManufacturerIDs'.

如何在这里将通用列表作为可选参数?

Dar*_*rov 91

使用可选参数有什么意义?List<T>是一个引用类型,如果客户端没有提供值,它将只是null:

public HttpResponseMessage Get(List<long> manufacturerIDs)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用swashbuckle来生成文件.在这种情况下,定义可选参数的方式很重要,观察:`[FromUri] object [] foo = null` - >"在新行中提供多个值." `[FromUri] object [] foo` - >"在新行中提供多个值(至少需要一个)." `object [] foo` - >"(必填)"因此,在这种情况下,它实际上取决于您对最终用户的期望. (12认同)
  • 根据我的经验,在许多情况下,您必须将可选参数显式设置为null(http://stackoverflow.com/a/22397723/1454888).这对我来说是违反直觉的,但它确实有效.谢谢. (4认同)
  • 我必须在 List&lt;string&gt; 可选参数之前插入 [FromUri] 属性。正如 @Nebula 注意到的那样,当您使用 = null 时会有所不同。当您不添加 = null 时,您必须至少指定一个元素。 (2认同)