c# - 在不解包任务的情况下返回 ActionResult
问题描述
我经常遇到这种情况,我的服务返回任务,我必须在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
}
我的问题是,有没有办法在不使动作异步的情况下设置从 aTask<T>
到a 的转换,也许是通过隐式运算符?ActionResult<T>
解决方案
你忘了在 Task 之前提到async
public async Task<Foo> Action(int id)
{
return _fooService.Details(id); // <--- pass-through Task
return BadRequest() // <-- Now it will run
}
推荐阅读
- reactjs - 无法在 Laravel 项目中安装 Flow for React
- javascript - 如何防止我的 ajax 参数持有 php 'header()' 值
- php - 如何在 php 代码编辑器中修复编码(阿拉伯语)单词?
- angular - Angular 6 - 在应用程序初始化时接收 HTTP GET 请求
- xml - 在 XML 上,保留具有特定名称的行并删除其他行
- google-colaboratory - 将 Google Photos API 与 Colab 结合使用的最佳方式是什么?
- javascript - 在派生类而不是类本身上添加新方法有什么好处?
- visual-studio - Visual Studio 2017 - 如何使用 CMake 从源代码创建项目?
- javascript - 变量掩蔽
- json - 翻译邮件通知