【问题标题】:.NET XML serialization in 2009 [duplicate]2009 年的 .NET XML 序列化 [重复]
【发布时间】:2009-08-25 03:22:23
【问题描述】:

可能重复:
Replacement for XML Serialization

.Net 世界中的 xml 序列化世界除了 old XmlSerializer 之外还有什么新东西吗?

更新:这可能与better asked question 重复。

【问题讨论】:

  • 我讨厌问这个,但是 XmlSerializer 有什么问题?
  • @sztomi:无法使用 IEnumerable 真的让我很烦恼。

标签: .net xml-serialization


【解决方案1】:

DataContractSerializer

例如默认情况下被 WCF 使用。请参阅here 进行比较。

就个人而言,我讨厌XmlSerializer 不能做内部类型。 DataContractSerializer 没有这个问题。此外,例如,DataContractSerializer 使用泛型更容易。如果您想生成人工可编辑的 XML 格式,那可能不太理想。

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

[DataContract]
public MyClass
{
    public MyClass()
    {
        Initialize();
    }

    [OnDeserializing]
    private OnDeserializing(StreamingContext context)
    {
        Initialize();
    }

    private void Initialize()
    {
        // Do stuff
    }
}

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

【讨论】:

  • 注意构造函数不是用 DataContractSerializer 调用的
  • 好点。在我弄清楚之前,它把我搞糊涂了:)
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多