Alterar as propriedades implementadas automaticamente para normal e desserialização com BinaryFormatter
Eu tenho um objeto com uma propriedade implementada como
public String Bla {get;set;}
Depois de mudar a implementação para algo como
private String _bla;
public String Bla
{
get { return _bla; }
set { _bla = value; }
}
na deserialização, esta Propriedade aparece vazia.
Eu tenho muitos dados serializados da implementação antiga e gostaria de carregá-los com a nova implementação
Existe alguma maneira, para alterar a implentação para ser compatível com arquivos binários antigos?
EDITAR:
Algumas pessoas podem ter o mesmo problema, então aqui está minha solução hackeada:
os campos autogerados possuem uma convenção de nomenclatura que é código c # inválido:
[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;
}
a solução rápida e suja para mim foi criar um campo de apoio privado chamadoxMyFieldxK__BackingField
na fonte,
e remendar os dados binários serializados, substituindo todas as ocorrências de<MyField>
comxMyFieldx
antes da desserialização