如何停止 Resharper 建议属性应该更改为“仅获取”对于将被反序列化的类

问题描述 投票:0回答:2

是否可以通知 resharper 一个类将被反序列化,以阻止它提示“自动属性可以只获取”?特别是因为接受 resharper 建议使属性只获取将破坏使用 System.Text.Json 的反序列化。

下面是一个示例场景,我们有一个初始化列表,其内容被更新并随后被序列化。需要 setter 初始化程序,以便可以通过 System.Text.Json 反序列化对象。

public class MyClass
{
    public List<int> Numbers { get; set; } = new(); // resharper warns property can be made get only
}

我很欣赏这可以通过“禁用评论”为每个属性(或整个文件)明确完成,但这相当丑陋。

// ReSharper disable once AutoPropertyCanBeMadeGetOnly.Global

c# resharper
2个回答
0
投票

最后一个微不足道的修复.. 将类分配为可序列化足以让 ReSharper 正确识别该类可能被反序列化。因此实际上需要属性设置器(或初始化器),即不再建议使属性“只获取”。

[Serializable] // resharper is now aware that the class may be deserialized and no longer suggests the property can be made 'get only'
public class MyClass
{
    public List<int> Numbers { get; set; } = new();
}

0
投票

Newtonsof.Json 即使没有设置也会反序列化;但是,如果您决定走艰难的道路并使用 Text.Json,请使用 init;而不是设置;不仅要使用 Text.Json 进行反序列化,还要防止 NullReference 异常。

using System.Text.Json;

public class MyClass
{
   public List<int> Numbers{ get; init; } = new();
}
© www.soinside.com 2019 - 2024. All rights reserved.