2

我有这个代码:

public IHttpActionResult Get([FromUri]GetFilesRequest request)

如果 request 是null,我想创建一个新的GetFilesRequest,因为在构造函数中我这样做是为了创建类的默认参数:

public GetFilesRequest()
    {
        Sort = "latest";
        Filter = "";
    }

所以我在想:

public IHttpActionResult Get([FromUri]GetFilesRequest request = new GetFilesRequest)

但我收到了这个警告:

'request' is of type 'GetFilesRequest'. A default parameter value of a reference type other than string can only be initialized with null.
4

3 回答 3

6

否 - 默认值必须是编译时常量。您可以使用重载代替吗?

public IHttpActionResult Get()
{
     return Get(new GetFilesRequest());
}
于 2014-05-20T21:25:13.750 回答
4

您只能使用编译器可以创建的常量值。您所拥有的将需要运行时对象分配,这就是编译器抱怨的原因。尝试这样的事情。

public IHttpActionResult Get([FromUri]GetFilesRequest request = null) {
    request = request ?? new GetFilesRequest();
}
于 2014-05-20T21:24:47.383 回答
2

由于错误表明这不可能作为参数。但是,您可以这样重构代码

public IHttpActionResult Get([FromUri]GetFilesRequest request = null)
{
   if (request == null) request = new GetFilesRequest();

   // TODO : Remaining method body
}
于 2014-05-20T21:24:59.027 回答