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?

questionAnswers(4)

yourAnswerToTheQuestion