今天在寫代碼是遇到這個錯誤。
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