我有一个名为MyObject
的简单自定义对象(一些基本属性和一个List(of MyObject)
,因此它是递归的)我需要序列化存储。我不确定我是否会序列化为XML或Binary,但我想确保我使用最新的方法来实现它,因为涉及到一些不同的命名空间,我可能会遗失了什么。
System.Xml.Serialization.XmlSerializer
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
还有一个System.Runtime.Serialization.Formatters.Soap.SoapFormatter
,但MSDN声称它的折旧有利于BinaryFormatter。我原本期望所有内容都在上面的第二个命名空间中 - 是否有我应该使用的更新版本的XmlSerializer?
答案 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。