回答
它使用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