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]
属性和用于序列化的版本。