天天看點

同時使用XmlSerializer和WCF的DataContractSerializer

今天在寫代碼是遇到這個錯誤。

Type ‘..’ cannot be ISerializable and have DataContractAttribute attribute.

隻是因為在一個類裡面同時使用.Net 1.1 的XmlSerializer 和.NET 3.5的DataContractAttribue所導緻的。這是不同版本的Framework對于序列化一個Object實作的不同技術。DataContract應該說以一個覆寫更廣泛的序列化技術。

避免這個錯誤的方法是不要再一個類裡面同時使用[Serializable]和[DataContract]标簽。也就是說這樣寫是錯誤的:

[Serializable]
[DataContract]
 public class GeneralInfo : XmlNodeBaseInfo {

}      
應該隻是用[Serializable]和[DataContract]标簽其中的一個。

這篇文章詳細的比較了XmlSerializer 和DataConstractSerializer      

XmlSerializer vs DataContractSerializer: Serialization in Wcf

繼續閱讀