.NET Compact Framework中缺少DataContractSerializer

时间:2009-03-07 14:33:27

标签: .net windows-mobile compact-framework datacontractserializer

似乎.NET Compact Framework中没有DataContractSerializer。我发现这非常令人惊讶,因为我认为DataContractSerializer是序列化的圣杯,也是.NET 3中引入最广泛的类之一。

有没有办法在Compact Framework下获得相同的功能,即能够使用文本格式轻松保存和恢复真实世界的对象图?

我宁愿远离旧版有限的.NET序列化程序,例如XmlSerializer和BinarySerializer。

我想也许可以使用DataContractSerializer的自定义实现,或者也许可以使用Mono的代码?有没有人试过这样做?

3 个答案:

答案 0 :(得分:3)

它在CF 3.5中不可用吗?(编辑:不,我查了 - 确实不是)。我知道XmlSerialzier在那里,但是,它确实有一些限制。

是否需要基于文本?选项是protobuf-net,适用于CF2.0,CF3.5,Silverlight,Mono,.NET 2.0等;并包括您通常需要的所有内容(包括回调等)。

顺便说一句,Mono代码(来自“Olive”)是我上次看的,不是很完整......

(编辑)另一个选项可能是Json.NET;来自here,这现在适用于CF;因为这是JSON,所以它是基于文本的,并且应该完成你需要的大部分工作。

答案 1 :(得分:0)

我不知道将XmlSerializer称为“限制”是否公平。你是什​​么意思?你用过它并发现它想要吗?什么是失败的具体事情?

根据我的经验,XmlSerializer实际上比DCS具有更丰富的功能。 DCS做得少,这可能是一件好事。另一方面,DCS至少做XmlSerializer没有的一件事 - 也就是说,它可以直接与私有成员变量进行序列化。

XmlSerializer快速且功能强大,您可以从中获得良好的实用性。

答案 2 :(得分:0)

找到解决方案: - )

http://www.codeproject.com/KB/XML/GR_CustomXmlSerializer.aspx有一个很棒的XML序列化器。

原样,代码在Compact Framework上不起作用,但我做了几个微不足道的调整才能使它工作,只有很小的功能损失。我还使用OpenNetCF来填补一些缺失的CF片段。