回答
它使用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调用构造函数 – 2009-08-24 19:12:09
好点。它在我意识到这一点之前就困惑了我的地狱:) – Thorarin 2009-08-24 19:23:31
我讨厌问这个,但是XmlSerializer有什么问题? – 2009-08-24 19:06:13
@sztomi:无法使用IEnumerable真的很烦我。 –
2009-08-24 19:11:47