【发布时间】:2011-03-12 05:56:47
【问题描述】:
我需要将一些数据序列化为字符串。然后将该字符串存储在 DB 中的特殊列 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 序列化吗?请给我简短的sn-p?
【问题讨论】:
-
见 MSDN;
SoapFormatter已正式过时:msdn.microsoft.com/en-us/library/… -
我需要问类似的问题,但有点扩展。数据肯定会发生变化,我们可以让数据结构自己处理下一次变化吗?
标签: c# .net serialization versioning