我正在使用 ErrorOr (https://github.com/amantinband/error-or) 库从我的 API 返回响应。但是,当我从 API 方法返回响应时,我收到此错误:
这是我的代码:
[HttpPost("token", Name = "GenerateToken")]
[ProducesResponseType<GenerateToken.Response>((int)HttpStatusCode.OK)]
public async Task<IActionResult> GenerateToken(GenerateToken.Command command)
{
var response = await mediator.Send(command);
return await response.MatchAsync(
value => Ok(value),
errors => BadRequest(errors));
}
我在这里做错了什么?任何帮助将不胜感激。
正如评论中所指出的,您的
MatchAsync
方法闭包需要返回 TValue
的任务。最重要的是,您将在 onValue 闭包中返回 OkOjectResult
,并在 onError 闭包中返回 BadRequestObjectResult
。因此,MatchAsync
方法无法推断输出形状应该是什么。
由于您在 Match 闭包中没有执行任何异步操作,因此您可以仅使用非异步 Match 并避免使用任务包装的返回值,但您的问题仍然是相同的; Match并不知道你要通过
IActionResult
接口返回。因此,您必须将每个闭包返回值显式转换为 IActionResult
return response.Match(
value => (IActionResult)Ok(value),
errors => (IActionResult)BadRequest(errors));
或者,显式声明
IActionResult
的泛型类型
return response.Match<IActionResult>(
Ok,
BadRequest);