代码之家  ›  专栏  ›  技术社区  ›  SqlRyan

在.NET中序列化对象的最新实现方法(从v4.0开始)

  •  0
  • SqlRyan  · 技术社区  · 14 年前

    我有一个简单的自定义对象 MyObject (一些基本性质和 List(of MyObject) ,所以它是递归的)我需要对存储进行序列化。我还不确定是否要序列化为XML或二进制文件,但我想确保使用最新的方法进行序列化,因为涉及到几个不同的名称空间,我可能遗漏了一些内容。

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

    还有一个 System.Runtime.Serialization.Formatters.Soap.SoapFormatter 但是,msdn声称它的贬值有利于binaryformatter。我希望所有内容都在上面的第二个命名空间中——是否有我应该使用的XML序列化程序的更新版本?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Reed Copsey    14 年前

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

    XmlSerializer位于 System.Xml.Serialization 命名空间而不是System.Runtime命名空间-我怀疑这是因为它的位置(在System.xml.dll程序集中)及其对 System.Xml 命名空间。

    另外,仅供参考-当类的较新版本将用于较旧版本时,msdn将其标记为“过时”。例如,请参见 XmlDataDocument 的帮助-第一行是:

    注意:这个API现在已经过时了。

        2
  •  2
  •   code4life    14 年前

    还有DataContractSerializer,它是从.NET 3.5开始的。它在几个方面比XMLSerializer有一些改进。

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

        3
  •  1
  •   Community CDub    7 年前

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

    using System.Web.Script.Serialization;
    
    ...
    
    JavaScriptSerializer().Serialize(PocoObject);
    

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