0

我有一个简单的自定义对象,称为MyObject(几个基本属性和一个List(of MyObject),所以它是递归的),我需要对其进行序列化以进行存储。我不确定我是否会序列化为 XML 或二进制,但我想确保我正在使用最新的方法来执行此操作,因为涉及到一些不同的命名空间,我可能会遗漏了什么。

  • 要执行 XML,我会使用System.Xml.Serialization.XmlSerializer
  • 做二进制,我会用System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

还有一个System.Runtime.Serialization.Formatters.Soap.SoapFormatter,但 MSDN 声称它已贬值以支持 BinaryFormatter。我本来希望所有东西都在上面的第二个命名空间中——我应该使用更新版本的 XmlSerializer 吗?

4

3 回答 3

2

这些是正确的,当前的序列化实现。

XMLSerializer 位于System.Xml.Serialization命名空间而不是 System.Runtime 命名空间中——我怀疑这是因为它的位置(在 System.XML.dll 程序集中)以及它对命名空间的依赖System.Xml

此外,仅供参考 - 当有新版本的类用于支持旧版本时,MSDN 将它们标记为“过时”。例如,请参阅XmlDataDocument的帮助 - 第一行是:

注意:此 API 现在已过时。

于 2010-06-22T20:24:15.703 回答
2

还有从 .NET 3.5 开始的 DataContractSerializer。它在几个方面对 XmlSerializer 有一些改进。

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

于 2010-06-22T20:35:13.180 回答
1

对于 JSON 序列化,您可以使用:

using System.Web.Script.Serialization;

...

JavaScriptSerializer().Serialize(PocoObject);

我很难让它在 .NET 2.0 中顺利运行。在此处查看我对自己问题的回答。

于 2010-06-22T20:32:53.873 回答