首頁 » C#開發 » [C#] 事件(Event)發生無法序列化的錯誤

[C#] 事件(Event)發生無法序列化的錯誤

作者:

分類:

前言

今天在深度拷貝(deep copy)物件時發生一個錯誤,系統彈出未將類型”XXX”標記為序列化的錯誤,這問題通常只要在類別(class)上加上[Serializable]屬性即可,而我卻檢查好一陣子都沒發現漏掉的地方。

序列化錯誤訊息視窗
序列化錯誤訊息視窗

仔細看發出錯誤的是”System.ComponentModel.ReflectPropertyDescription”,並不是類別內物件,查一番資料後才知道是PropertyChangedEventHandler事件造成的。

解決方法

[field: NonSerialized]
public event PropertyChangedEventHandler PropertyChanged;

根據.NET手冊的說明:

使用 BinaryFormatter 或 SoapFormatter 類別序列化物件時,請使用 NonSerializedAttribute 屬性防止欄位序列化。 

以上為學習過程的問題紀錄

如果文章有誤,歡迎前輩留言請不吝指教。

參考資料

「cian」的個人頭像

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *