前言
今天在深度拷貝(deep copy)物件時發生一個錯誤,系統彈出未將類型”XXX”標記為序列化的錯誤,這問題通常只要在類別(class)上加上[Serializable]屬性即可,而我卻檢查好一陣子都沒發現漏掉的地方。
仔細看發出錯誤的是”System.ComponentModel.ReflectPropertyDescription”,並不是類別內物件,查一番資料後才知道是PropertyChangedEventHandler事件造成的。
解決方法
[field: NonSerialized]
public event PropertyChangedEventHandler PropertyChanged;
根據.NET手冊的說明:
使用 BinaryFormatter 或 SoapFormatter 類別序列化物件時,請使用 NonSerializedAttribute 屬性防止欄位序列化。
以上為學習過程的問題紀錄
如果文章有誤,歡迎前輩留言請不吝指教。
發佈留言