c# – Resharper不会自动转换为Serializable类的自动属性 ​​- 我应该?

前端之家收集整理的这篇文章主要介绍了c# – Resharper不会自动转换为Serializable类的自动属性 ​​- 我应该?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天遇到这个问题,并且能够确定,在执行代码清理时,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#相关文章