Ho bisogno di serializzare alcuni dati nella stringa. La stringa viene quindi memorizzata in DB in una colonna speciale SerializeData.Serializzazione e controllo delle versioni
Ho creato classi speciali che vengono utilizzate per la serializzazione.
[Serializable]
public class SerializableContingentOrder
{
public Guid SomeGuidData { get; set; }
public decimal SomeDecimalData { get; set; }
public MyEnumerationType1 EnumData1 { get; set; }
}
serializzazione:
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;
}
deserializzazione:
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;
}
Ora voglio avere delle versioni supporto. Cosa succede se cambio classe SerializableContingentOrder
. Voglio poter aggiungere nuovi campi in futuro.
Devo passare alla serializzazione DataContract? Per favore, dammi un breve frammento?
Vedere MSDN; 'SoapFormatter' è ufficialmente obsoleto: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.soap.soapformatter.aspx –
Ho bisogno di fare una domanda simile ma un po 'di estensione. I dati cambieranno definitivamente, possiamo strutturare i dati in modo da gestire autonomamente il prossimo cambiamento? –