返回操作结果而不解压缩任务



我经常遇到这种情况:我的服务返回的任务,在我从控制器中返回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>的转换,而无需使操作异步,也许通过隐式运算符?

你忘了在任务之前提到异步

public async Task<Foo> Action(int id)
{
    return _fooService.Details(id); // <--- pass-through Task
    
    return BadRequest() // <-- Now it will run
}

最新更新