代码之家  ›  专栏  ›  技术社区  ›  Jakub Å turc

2009年.NET XML序列化[副本]

  •  1
  • Jakub Å turc  · 技术社区  · 17 年前

    可能重复:
    Replacement for XML Serialization

    还有什么新的吗 old XmlSerializer 关于.NET世界中XML序列化的世界?

    更新: 这可能是 better asked question .

    1 回复  |  直到 17 年前
        1
  •  7
  •   Community Mohan Dere    9 年前

    DataContractSerializer

    例如,它由wcf默认使用。见 here 作为比较。

    就我个人而言,我讨厌这样 XmlSerializer 无法执行内部类型。DataContractSerializer没有此问题。此外, DataContractSerializer 例如,使用仿制药更容易。如果您想生成一个人工可编辑的XML格式,它可能不太理想。

    AS Maxim 指出, DataContractSerializer 其行为与您可能期望的略有不同:它不会调用任何构造函数来反序列化对象。如果出于任何原因需要进行一些初始化,可以使用 [OnDeserializing] 属性。我使用这样的模式:

    [DataContract]
    public MyClass
    {
        public MyClass()
        {
            Initialize();
        }
    
        [OnDeserializing]
        private OnDeserializing(StreamingContext context)
        {
            Initialize();
        }
    
        private void Initialize()
        {
            // Do stuff
        }
    }
    

    同样,有一个 [OnDeserialized] 属性和用于序列化的版本。

    推荐文章