Мне нужно сериализовать некоторые данные в строку. Строка затем сохраняется в БД в специальном столбце 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? Пожалуйста, дайте мне короткий фрагмент?
См. MSDN; «SoapFormatter» официально устарел: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.soap.soapformatter.aspx –
Мне нужно задать аналогичный вопрос, но немного его расширить. Данные будут меняться определенно, можем ли мы создать структуру данных для самостоятельной обработки следующего изменения? –