Я часто сталкиваюсь с таким сценарием, когда мои службы возвращают задачи, которые мне нужно распаковать, прежде чем я верну ActionResult
из контроллера.
public Task<ActionResult<Foo>> Action(int id)
{
// Task<Foo> cannot be casted to Task<ActionResult<Foo>>
return _fooService.Details(id);
}
Задача, возвращаемая службой, не может быть неявно приведена к ActionResult<Foo>
, поэтому я в итоге распаковываю задачу в контроллере. Вот так
public async Task<ActionResult<Foo>> Action(int id)
{
return await _fooService.Details(id);
// Both work
return BadRequest();
}
Если я не оберну его в ActionResult, я могу выполнить задачу, но не смогу вернуть другие типы IActionResults
.
public Task<Foo> Action(int id)
{
return _fooService.Details(id); // <--- pass-through Task
return BadRequest() // <-- But, I can't do this
}
У меня вопрос, есть ли способ настроить преобразование из Task<T>
в ActionResult<T>
без выполнения асинхронного действия, возможно, с помощью неявного оператора?