尽管可以指定委托的返回类型,但我会认为改用 Results会更简单(正如你已经发现的那样):
app.MapPost("check", async ([FromBody] UserClaims claims, ApplicationDbContext dbContext) =>
{
// ...
if (result is null)
return Results.NotFound();
return Results.Ok();
});
两者都返回相同的类型——IResult
,因此编译器能够推断出正确的返回类型。
在特定情况下,你还可以使用三元运算符。如果你希望保留TypedResults
,这可以减少一些冗余。例如,使用IResult
(虽然争论说这么做的理由不多):
app.MapPost("check", async ([FromBody] UserClaims claims, ApplicationDbContext dbContext) =>
{
// ...
return result is null
? (IResult)TypedResults.NotFound()
: TypedResults.Ok();
});
或者使用Results<NotFound, Ok>
:
app.MapPost("check", async ([FromBody] UserClaims claims, ApplicationDbContext dbContext) =>
{
var result = claims;
return result is null
? (Results<NotFound, Ok>) TypedResults.NotFound()
: TypedResults.Ok();
});
同时,也可以参考这个回答以及评论区的讨论。