Serialização e controle de versão
Eu preciso serializar alguns dados para string. A sequência é armazenada no banco de dados em uma coluna especial SerializeData.
Eu criei classes especiais que são usadas para serialização.
[Serializable]
public class SerializableContingentOrder
{
public Guid SomeGuidData { get; set; }
public decimal SomeDecimalData { get; set; }
public MyEnumerationType1 EnumData1 { get; set; }
}
Serialização:
protected override string Serialize()
{
SerializableContingentOrder sco = new SerializableContingentOrder(this);
MemoryStream ms = new MemoryStream();
SoapFormatter sf = new SoapFormatter();
sf.Serialize(ms, sco);
string data = Convert.ToBase64String(ms.ToArray());
ms.Close();
return data;
}
Desserialização:
protected override bool Deserialize(string data)
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(data).ToArray());
SoapFormatter sf = new SoapFormatter();
SerializableContingentOrder sco = sf.Deserialize(ms) as SerializableContingentOrder;
ms.Close();
return true;
}
Agora eu quero ter suporte a versão. O que acontece se eu mudarSerializableContingentOrder
classe. Quero poder adicionar novos campos no futuro.
Preciso mudar para a serialização DataContract? Por favor, me dê um pequeno trecho?