Измените автоматически реализованные свойства на обычные и десериализацию с помощью BinaryFormatter
У меня есть объект со свойством, реализованным как
public String Bla {get;set;}
После изменения реализации на что-то вроде
private String _bla;
public String Bla
{
get { return _bla; }
set { _bla = value; }
}
при десериализации это имущество пустует.
у меня есть много сериализованных данных из старой реализации, и я хотел бы загрузить их с новой реализацией
Есть ли способ, чтобы изменить implentation, чтобы быть совместимым со старыми двоичными файлами?
РЕДАКТИРОВАТЬ:
Некоторые люди могут столкнуться с той же проблемой, поэтому здесьмое хакерское решение:
автоматически сгенерированные поля имеют недопустимое соглашение об именах:
[CompilerGenerated]
private string k__BackingField;
[CompilerGenerated]
public void set_MyField(string value)
{
this.k__BackingField = value;
}
[CompilerGenerated]
public string get_MyField()
{
return this.k__BackingField;
}
быстрое и грязное решение для меня заключалось в создании частного вспомогательного поля под названиемxMyFieldxK__BackingField
в источнике,
и исправление сериализованных двоичных данных путем замены всех вхождений с
xMyFieldx
до десериализации