【发布时间】:2020-03-07 06:59:04
【问题描述】:
有时,当您创建 DTO 以反序列化 json 时,您使用 [JsonRequiredAttribute] 装饰属性:
class Car
{
[JsonRequired]
public string Make { get; set; }
}
但是,当您在使用 ReSharper 或 C# 8 时执行此操作时,您会看到以下警告:
Car.cs(30, 19):[CS8618] 不可为空的属性“Make”未初始化。考虑将属性声明为可为空。
在某些项目中,我有很多这样的警告,我想知道是否有一种方法可以仅针对误报来抑制它们?我可以完全禁用它们,但我不想这样做。
【问题讨论】:
-
你能把 Make 初始化为一个空字符串吗?
-
下一行使用一次应该可以to disable specific warning,不确定是否出错,试试
CS8618? -
你可以尝试用
[NotNull]属性来装饰属性或者用空字符串初始化 -
@MichaelLiu 这看起来像一个属性有一个默认值。它适用于其中一些人,但在许多情况下,我无法提供合理的价值。我不确定那个解决方案。它不仅仅是一个字符串,可以有字典、列表、各种东西,也可以是接口或其他抽象类型。
-
实际上,这不是更清晰的警告,您可以禁用normally,但这比解决问题更有效。
标签: c# json.net resharper roslyn-code-analysis c#-8.0