gpt4 book ai didi

c# - 返回类型中引用类型的可空性与覆盖的成员不匹配

转载 作者:行者123 更新时间:2023-12-05 03:57:18 28 4
gpt4 key购买 nike

我正在使用一个返回 JSON 的 API,其中一个值可以是 false或一个对象。为了处理这个问题,我创建了一个自定义 JsonConverter<T> .

internal class JsonFalseOrObjectConverter<T> : JsonConverter<T> where T : class
{
public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.False)
{
return null;
}
else
{
return JsonSerializer.Deserialize<T>(ref reader);
}
}
}

问题是我收到以下编译器错误:

Possible null reference return.

我可以将返回类型设置为 T?但是我会得到错误:

Nullability of reference types in return type doesn't match overridden member.

我该如何解决?

最佳答案

您已声明泛型类型是(不可为空的)T然而你回来了null .这显然是无效的。

你需要让你的转换器实现 JsonConverter<T?>如果您不在乎,也可以使用 null 宽容运算符。

internal class JsonFalseOrObjectConverter<T> : JsonConverter<T?> where T : class
{
public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
...
}

public override void Write(Utf8JsonWriter writer, T? value, JsonSerializerOptions options)
{
...
}
}

public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.False)
{
return null!;
}
...
}

关于c# - 返回类型中引用类型的可空性与覆盖的成员不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672640/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com