2009-12-11 30 views
0

我正在創建一個空氣應用程序,允許用戶在文件中創建,編輯和保存對象。如果用戶在關閉之前沒有保存對對象的更改,我試圖實現「關閉時保存」提示。最簡單的方法來判斷一個對象自保存後是否被修改過?

比方說,我有一個名爲MyClass的類標記爲Bindable,它由字段組成,每個字段暴露一個getter和setter。其中一些字段是自定義類的ArrayCollections。我想考慮更改對任何字段或父對象組成的任何數組集合中的任何對象中的任何字段的更改。

我可以手動調度一個事件,任何時候在MyClass對象上調用setter並手動管理這一切,但我也必須在應用程序邏輯的一堆地方做這件事,例如當用戶改變時構成它的一個數組集合中的一個自定義對象。這是一個很好的解決方案,但有點骯髒,難以維護。我也可以根據我在啓動或上次保存時創建的副本來檢查當前對象,但我不喜歡爲此僅使用內存佔用加倍的想法。

我希望有一些事件,可能是一個事件,綁定廣播,我可以在一個地方聽,並管理我的「保存」變量。這樣的事情存在嗎?我試着監聽dataChange事件綁定顯然派遣,但我做錯了,或者它沒有做我認爲應該。有更好的選擇嗎?

感謝

回答

1

創建你的對象是hash得到保存,然後保存的哈希比較的哈希當前正在操作的對象。如果它不同,你的物體是不同的。

這當然需要一個體面散列,衝突量足夠低,但是在您的細讀中可以在線獲得許多散列函數。

存在可用於可綁定屬性的「propertyChanged」事件,但它最多隻會變脆,因爲它僅適用於可綁定屬性,並且僅適用於那些未指定其他綁定事件的可綁定屬性。

此外,你只需要真正需要計算哈希兩次(在保存和退出比較),而使用事件會顯着更低效。

+0

好主意。謝謝! – justin 2009-12-12 13:55:52

1

我不知道,如果this可能有關,但你總是可以看看

相關問題