用于在.NET中序列化对象的大多数当前实现方法(自v4.0起)

时间:2010-06-22 20:21:12

标签: .net serialization xml-serialization binary-serialization

我有一个名为MyObject的简单自定义对象(一些基本属性和一个List(of MyObject),因此它是递归的)我需要序列化存储。我不确定我是否会序列化为XML或Binary,但我想确保我使用最新的方法来实现它,因为涉及到一些不同的命名空间,我可能会遗失了什么。

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

还有一个System.Runtime.Serialization.Formatters.Soap.SoapFormatter,但MSDN声称它的折旧有利于BinaryFormatter。我原本期望所有内容都在上面的第二个命名空间中 - 是否有我应该使用的更新版本的XmlSerializer?

3 个答案:

答案 0 :(得分:2)

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

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

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

  

注意:此API现已过时。

答案 1 :(得分:2)

还有DataContractSerializer,它是.NET 3.5的一部分。它在几个方面比XmlSerializer有一些改进。

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

答案 2 :(得分:1)

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

using System.Web.Script.Serialization;

...

JavaScriptSerializer().Serialize(PocoObject);

我在.NET 2.0中顺利运行时遇到了一些困难。请参阅我对自己问题的回答here