【发布时间】:2011-05-12 14:44:51
【问题描述】:
在我的 Silverlight 4 应用程序中,我通过 DataContractSerializer XML-Serialization 保存我的对象 - 这很简单:
public byte[] SerializeModel(ServiceModel model)
{
System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(ServiceModel));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
serializer.WriteObject(ms, model);
byte[] bytes = ms.ToArray();
ms.Close();
return bytes;
}
...并通过以下方式轻松加载它们:
public ServiceModel DeserializeModel(string stream)
{
System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(ServiceModel));
System.Xml.XmlReader reader = System.Xml.XmlReader.Create(new System.IO.StringReader(stream));
object result = serializer.ReadObject(reader);
return (ServiceModel)result;
}
(省略错误处理)
对我来说问题是,我需要使用 getter 和 setter 来保存(或更好:加载)公共属性的数据。这会导致失去对数据完整性的控制。 IE。我有一组对象,我想控制要添加或删除哪些对象。我需要对集合进行子类化或重新实现,更改 Add 和 Remove 方法以及我需要控制的任何其他方法。但是将其设为私有使我无法使用 DataContractSerializer。
任何建议如何保持简单但保持对类中对象的控制?
提前致谢,
弗兰克
【问题讨论】:
-
你不能在setter中控制这个吗?
标签: c# serialization architecture xml-serialization