gpt4 book ai didi

c# - Resharper 不会自动转换为可序列化类中的自动属性 ​​- 应该吗?

转载 作者:可可西里 更新时间:2023-11-01 08:43:55 25 4
gpt4 key购买 nike

我今天遇到了这个问题并且能够确定,在进行代码清理时,R# 不会将属性从具有支持字段转换为使用 SerializableAttribute 装饰的类中的自动属性,例如

using System; 

namespace DataContracts
{
[Serializable]
public class Class1
{
private bool _wontChange;

public bool WontChange
{
get { return _wontChange; }
set { _wontChange = value; }
}
}
}

上述代码在自动代码清理期间不会更改。当然,我可以手动执行此操作,而且我仍然可以从 R# 中获得快速操作菜单选项以在单个属性级别执行此操作。但这让我想知道在 [Serializable] 类中使用自动属性时是否存在我没​​有意识到的潜在问题。

JetBrains forum thread我们被称为an issue其中讨论了这个问题,但似乎并没有最终解决。

最佳答案

当你序列化对象时,字段名等开始变得重要,因为大多数序列化机制使用字段名来恢复序列化数据。现在,当您更改字段名称时,您将无法正确读取旧的序列化版本。

当您转换为自动属性时,支持字段将有一个自动生成的名称,该名称与旧名称不匹配。因此,这会在读取旧的序列化数据时引入潜在问题。

我想避免这个陷阱,如果类被标记为可序列化,R# 不会自动将其更改为自动属性。

关于c# - Resharper 不会自动转换为可序列化类中的自动属性 ​​- 应该吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469989/

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