Serialización y versionado
Necesito serializar algunos datos para encadenar. La cadena se almacena en DB en una columna especial SerializeData.
He creado clases especiales que se utilizan para la serialización.
[Serializable]
public class SerializableContingentOrder
{
public Guid SomeGuidData { get; set; }
public decimal SomeDecimalData { get; set; }
public MyEnumerationType1 EnumData1 { get; set; }
}
Publicación por entregas:
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;
}
Deserialización:
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;
}
Ahora quiero tener soporte de versiones. ¿Qué pasa si cambio?SerializableContingentOrder
clase. Quiero poder agregar nuevos campos en el futuro.
¿Tengo que cambiar a la serialización de DataContract? Por favor, dame un fragmento corto?