Resharper автоматически не преобразовывает в автоматические свойства в сериализуемых классах - должен я?

Я натыкался на эту проблему сегодня и смог решить, что при выполнении очистки кода 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, который распараллеливает форум, мы отнесены в проблему, в которой обсуждена эта проблема, но это, кажется, окончательно не разрешено.

11
задан arootbeer 12 August 2010 в 17:53
поделиться

1 ответ

Когда вы сериализуете объекты, имена полей и т. Д. Начинают иметь значение, потому что большинство механизмов сериализации используют имена полей для восстановления сериализованных данных. Теперь, когда вы меняете имя поля, вы не можете правильно читать старые сериализованные версии.

При преобразовании в автоматические свойства у резервного поля будет автоматически сгенерированное имя, которое не соответствует старому имени. Следовательно, это может создать потенциальную проблему при чтении старых сериализованных данных.

Я полагаю, чтобы избежать этой ловушки, R # не меняет его автоматически на автоматическое свойство, если класс помечен как сериализуемый.

12
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: