Мне нужно сериализовать некоторые данные в строку.Затем строка сохраняется в БД в специальном столбце SerializeData.
Я создал специальные классы для сериализации.
[Serializable]
public class SerializableContingentOrder
{
public Guid SomeGuidData { get; set; }
public decimal SomeDecimalData { get; set; }
public MyEnumerationType1 EnumData1 { get; set; }
}
Сериализация:
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;
}
Десериализация:
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;
}
Теперь яхочу иметь поддержку версий.Что произойдет, если я изменю SerializableContingentOrder
класс.Я хочу иметь возможность добавлять новые поля в будущем.
Нужно ли переходить на сериализацию DataContract?Пожалуйста, дайте мне короткий фрагмент?