3

似乎 DataContractSerializer 在 .NET Compact Framework 中不可用。我发现这非常令人惊讶,因为我认为 DataContractSerializer 是序列化的圣杯,并且是 .NET 3 中引入的最广泛使用的类之一。

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

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

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

4

3 回答 3

3

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

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

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

(编辑)另一种选择可能是Json.NET;从这里开始,这现在适用于 CF;因为这是 JSON,所以它是基于文本的,并且应该可以满足您的大部分需求。

于 2009-03-07T16:47:35.110 回答
0

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

根据我的经验,XmlSerializer 实际上比 DCS 具有更丰富的功能。DCS 做的更少,这可能是件好事。另一方面,DCS 至少做了 XmlSerializer 没有做的一件事——那就是它可以直接序列化到私有成员变量和从私有成员变量中序列化。

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

于 2009-03-09T03:16:06.917 回答
0

Found a solution :-)

There's a great XML serializer at http://www.codeproject.com/KB/XML/GR_CustomXmlSerializer.aspx.

As is, the code doesn't work on the Compact Framework, but I've made several trivial adjustments to get it to work, with only a minor loss of functionality. I've also used OpenNetCF to fill in a few missing CF pieces.

于 2009-03-20T20:49:29.023 回答