2011-06-16 20 views
2

我有一個包含一個觸發事件的對象的對象圖。C#暫時取消分配序列化的事件處理程序?

我想序列化這個圖,但是我偶爾會將處理程序插入屬於非可序列化類的事件中,我也不希望那些不可序列化的對象首先被序列化。

基本上,像日曆,報表,圖表等不可序列化的東西插入到數據圖表中,事件用於更新等事情。我想序列化我的數據圖表,但不是我的報表,日曆,等

當我嘗試序列化我的數據圖,我得到一個異常,如果事件委託不爲空,因爲處理類是non-serialisable。我有這些表單中的代碼,當我關閉它們時,處理程序斷開連接,所以只要我關閉了所有日曆,報告等,就可以保存數據圖。

邏輯解決方案似乎是:

  1. 設置一個等於事件處理程序當前狀態的臨時變量,無論是否爲null。
  2. 將事件處理程序設置爲null。
  3. 序列化我的數據圖。
  4. 將事件處理程序恢復到之前的狀態。

然而,這並不工作,因爲我得到一個編譯時錯誤,告訴我我的事件可以在左側只存在+ =或 - =

如何刪除所有臨時處理程序而我連載,然後將它們放回去?

回答

4

您可以嘗試在您的活動中應用[field:NonSerialized]

+1

你的速度更快。我可以添加鏈接到一個例子:http://msdn.microsoft.com/en-us/library/ms182349%28v=vs.80%29.aspx :) – 2011-06-16 03:48:56

+1

謝謝。這很好,而且非常簡單。 – Ozzah 2011-06-16 03:51:41