Возврат ActionResult без распаковки Задачи - PullRequest
1 голос
/ 15 июня 2019

Я часто сталкиваюсь с таким сценарием, когда мои службы возвращают задачи, которые мне нужно распаковать, прежде чем я верну 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> без выполнения асинхронного действия, возможно, с помощью неявного оператора?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...