我有一個自定義文件類型與我的應用程序相關聯,我通過簡單地將它序列化到一個文件來保存一個類實例。如何使我的自定義文件類型可升級?
我希望能夠通過向類中添加更多屬性來升級我的應用程序,也許還會刪除屬性。我怎樣才能讓舊版本的應用程序能夠使用新文件 - 無論它能夠得到它們,更重要的是,如何獲得新版本的應用程序以使用舊文件?有沒有實現這個目標的常見做法?
我在問這個之前第一個版本發佈 - 如何讓文件類型容易升級?
(谷歌搜索跑進了大量的「噪音」。)
我有一個自定義文件類型與我的應用程序相關聯,我通過簡單地將它序列化到一個文件來保存一個類實例。如何使我的自定義文件類型可升級?
我希望能夠通過向類中添加更多屬性來升級我的應用程序,也許還會刪除屬性。我怎樣才能讓舊版本的應用程序能夠使用新文件 - 無論它能夠得到它們,更重要的是,如何獲得新版本的應用程序以使用舊文件?有沒有實現這個目標的常見做法?
我在問這個之前第一個版本發佈 - 如何讓文件類型容易升級?
(谷歌搜索跑進了大量的「噪音」。)
我認爲有兩種方式
也許你應該看看協議緩衝區的C#實現。這是一種由google開發的序列化類型(http://code.google.com/p/protobuf-net/)它使用id來進行身份驗證。所以你序列化的數據沒有被屬性名等綁定。
正如你在發佈第一個版本之前所要求的那樣,我來及時告訴你:長期來說,你不會對BinaryFormatter感到滿意。 我認爲你應該將存儲對象模型與「操作對象」分開。
只是序列化程序的運行狀態是指作爲一個簡單的序列化方法,但它從不斷再次作出顯著的變化對這些對象阻止。
我認爲proto-buf非常好,因爲版本控制路徑非常清晰。此外,XmlSerializer序列化類很好,因爲它們是可讀的。
可能這將有助於http://msdn.microsoft.com/en-us/library/ms229752%28v=vs.80%29.aspx – yogi 2012-08-06 13:48:05
@yogi你可以讓你的評論到答案。它看起來很有保證。 – ispiro 2012-08-06 13:53:14
不。鏈接不是答案。如果@yogi可以總結頁面的內容(並鏈接到該頁面),那將會作出回答。 – Oded 2012-08-06 13:55:25