【发布时间】:2014-05-27 12:00:37
【问题描述】:
我有可以使用Serialise 方法序列化自己的对象(哇!)。
我尝试了多种序列化方法,但都被困在serialize.WriteObject 方法上。
这是我最近尝试的样子:
public string Serialise()
{
DataContractSerializer serializer = new DataContractSerializer(this.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, this);
ms.Position = 0;
string serializedContent;
using(StreamReader sr = new StreamReader(ms))
{
serializedContent = sr.ReadToEnd();
}
return serializedContent;
}
我以前用XmlSerializer 来做这件事,这些并没有给我带来任何麻烦。
我很确定我将我的属性设为DataMember 并设置了班级的DataContract。
我在这里做错了什么?这是我想使用这个序列化的方式吗?是因为我想用 DataContract 在类内部进行序列化吗?我很困惑..
--------编辑---------
呃..我发现问题出在哪里...我的 BaseObject 的属性上没有 DataContract 和 DataMembers(尽管我不希望我的 xml 中有任何这些属性)。所以显然只为扩展类制作一个 DataContract 不足以序列化它。
【问题讨论】:
-
你想序列化的对象中真的有这个方法吗?在我看来,它是对象扩展方法的主要候选对象。
-
“卡住”是什么意思?
-
嗯,现在它只涵盖 2 个类,所以效果没有那么大,但是当这个数量增加时,这样做可能是值得的。这个 DataContractSerialisation 也是测试的一部分,看看我是否可以替换已经存在的 XmlSerialisation。
-
@CathalMF 好吧,当它尝试执行这一行时,它只会无休止地坚持这一行。它没有到达下一行。
标签: c# xml-serialization datacontractserializer