У меня есть этот код:
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.
Нет - значение по умолчанию должно быть константой времени компиляции. Можете ли вы использовать перегрузку?
public IHttpActionResult Get()
{
return Get(new GetFilesRequest());
}
Вы можете использовать только постоянное значение, которое может создать компилятор. То, что у вас есть, потребует распределения объектов времени исполнения, поэтому компилятор жалуется. Попробуйте что-то вроде этого.
public IHttpActionResult Get([FromUri]GetFilesRequest request = null) {
request = request ?? new GetFilesRequest();
}
Поскольку ошибка указывает, что это невозможно в качестве параметра. Однако вы можете реструктурировать код как таковой
public IHttpActionResult Get([FromUri]GetFilesRequest request = null)
{
if (request == null) request = new GetFilesRequest();
// TODO : Remaining method body
}