Zmień właściwości zaimplementowane automatycznie na normalne i deserializację za pomocą BinaryFormatter
Mam obiekt z zaimplementowaną właściwością
public String Bla {get;set;}
Po zmianie implementacji na coś podobnego
private String _bla;
public String Bla
{
get { return _bla; }
set { _bla = value; }
}
w deserii - ta właściwość jest pusta.
Mam wiele serializowanych danych ze starej implementacji i chciałbym załadować je nową implementacją
czy istnieje sposób, aby zmienić implantację na starsze pliki binarne?
EDYTOWAĆ:
Niektórzy ludzie mogą napotkać ten sam problem, więc oto moje rozwiązanie hakerskie:
pola generowane automatycznie mają konwencję nazewnictwa, która jest niepoprawnym kodem c #:
[CompilerGenerated]
private string <MyField>k__BackingField;
[CompilerGenerated]
public void set_MyField(string value)
{
this.<MyField>k__BackingField = value;
}
[CompilerGenerated]
public string get_MyField()
{
return this.<MyField>k__BackingField;
}
szybka i brudna poprawka dla mnie polegała na utworzeniu prywatnego pola nazwanegoxMyFieldxK__BackingField
w źródle,
i łatanie serializowanych danych binarnych przez zastąpienie wszystkich wystąpień<MyField>
zxMyFieldx
przed deserializacją