如何让一个Minimal API返回布尔值?

后端开发 2026-07-12

我在一个Minimal API中有一个C#类,它会被返回。这个类长得是这样的:

public class APIResponse
{
    public APIResponse()
    {
        ErrorMessages = new List<string>();

        Result = new object();
    }

    public bool IsSuccess { get; set; }
    public object Result { get; set; }
    public HttpStatusCode StatusCode { get; set; }
    public List<string> ErrorMessages { get; set; }
}

我把Result当作一个对象来使用,根据查询返回的内容返回不同的数据类型。对于整数等,这样做一直没问题。但当我尝试给它赋值一个布尔值时,在C# Blazor应用中就会出现各种问题。它抱怨对象无法转换为ValueKind。

我正在把 bool 赋值给 Result。那里为什么会变成 ValueKind

我找到的所有解决方案,尝试后仍然会出错

对象无法转换为ValueKind

如何在Minimal API中把 bool 赋给 Result,在调用该端点的Blazor应用中得到一个布尔值?

解决方案

发生的并不是你的 bool 在Minimal API中“变成”一个 ValueKind。其实,是你在Blazor应用中对 APIResponse 进行反序列化后,你的 object Result 通常会以一个 JsonElement(来自 System.Text.Json)返回,而那个类型具有一个 ValueKind 属性。

下面是一个与Diego D所说类似的例子:

Minimal API

public class APIResponse<T>
{
    public bool IsSuccess { get; set; }
    public T? Result { get; set; }
    public HttpStatusCode StatusCode { get; set; }
    public List<string> ErrorMessages { get; set; } = new();
}

返回一个 bool 结果,例如:

return Results.Ok(new APIResponse<bool>
{
    IsSuccess = true,
    Result = true,
    StatusCode = HttpStatusCode.OK
});

Blazor调用

var resp = await Http.GetFromJsonAsync<APIResponse<bool>>("your-endpoint");
bool value = resp?.Result ?? false;
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章