【发布时间】:2018-11-26 09:32:42
【问题描述】:
我正在尝试修改我的 Asp.net Core 2.1 项目以使用新的控制器操作返回类型 (https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-2.1#actionresultt-type)
他们给出的控制器示例是:
[HttpGet("{id}")]
[ProducesResponseType(200)]
[ProducesResponseType(404)]
public ActionResult<Product> GetById(int id)
{
if (!_repository.TryGetProduct(id, out var product))
{
return NotFound();
}
return product;
}
但是,此方法的存储库签名是什么样的?
如果我尝试:
public async Task<Product> TryGetProduct(int id)
然后我收到一个错误,即没有采用 2 个参数的存储库方法。
但如果我尝试:
public async Task<Product> TryGetProduct(int id, out var product)
然后我得到:
异步方法不能有 ref 或 out 参数
【问题讨论】:
-
这意味着你的方法签名不能有
async关键字。您仍然可以返回Task<Product>以便它可以等待,但您不能在方法本身内进行任何等待。
标签: asp.net asp.net-core