我有这段代码:
public IHttpActionResult Get([FromUri]GetFilesRequest 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.
答案 0 :(得分:5)
否 - 默认值必须是编译时常量。你可以改用过载吗?
public IHttpActionResult Get()
{
return Get(new GetFilesRequest());
}
答案 1 :(得分:4)
您只能使用编译器可以创建的常量值。你所拥有的将需要运行时对象分配,这就是编译器抱怨的原因。尝试这样的事情。
public IHttpActionResult Get([FromUri]GetFilesRequest request = null) {
request = request ?? new GetFilesRequest();
}
答案 2 :(得分:2)
由于错误表明这不可能作为参数。但是,您可以重新构建代码
public IHttpActionResult Get([FromUri]GetFilesRequest request = null)
{
if (request == null) request = new GetFilesRequest();
// TODO : Remaining method body
}