2012-05-18 75 views
1

我們有一個相當複雜的對象模型,我們需要在特定時間保存當前狀態,並在發生特定問題時將狀態恢復爲它是。幾乎是一個撤消功能。序列化/反序列化對象模型和事件故障

我最初認爲是一個深層複製,但最終只是將模型序列化爲二進制,然後反序列化,如果我們需要的話。這是我第一次做這樣的事情,最初有事件處理程序沒有序列化的問題,我用[field:NonSerialized]屬性解決了這個問題。

但現在的問題是,當模型反序列化時,事件不起作用。

什麼是解決這個問題的最佳解決方案?我遇到了一些解決方案,我可以使用[OnDeserialized()]或實現IDeserializationCallback接口,然後在後續的方法中重新訂閱每個事件。

雖然這看起來好像很多工作,但由於沒有經驗,我只是想檢查一下,在我開始工作之前,這是否正確。

謝謝。

回答

3

無法序列化附加到對象模型中事件的事件處理程序。反序列化模型後,您需要重新訂閱。

我會去IDeserializationCallback接口,因爲您需要通知其他類重新訂閱剛纔反序列化的實例。

+0

謝謝Jakub。這就是我想和現在正在做的。我想檢查一下我沒有錯過任何明顯的事情。 –