就我的理解而言,大部分序列化/反序列化技術都使用反射來創建對象並設置或獲取值。那麼爲什麼要明確地綁定這些屬性,例如[XmlIgnore] ... for xml,[Serializable] ...在二進制序列化中,[JsonPropery] ... Json.Net等等。由於這些問題就像涉及對象的跨領域問題一樣,我們不能在對象之外做同樣的事情嗎?爲什麼我們需要將序列化屬性修飾爲類和屬性,或者實現一些用於保存數據的接口?
如果問題分離了,用戶可以控制對象圖/樹的哪一部分需要序列化/反序列化哪些上下文以及如何等?
是否有任何這樣的框架,使整個序列化作爲方面,即在類的關注之外?
編輯1:我的需求如下 我的應用程序將數據存儲在一個巨大的樹結構中。客戶的要求是能夠以xml格式序列化某些數據,以及Json中的某些部分數據(我不知道爲什麼會這樣),並且我們將大部分數據以二進制形式序列化爲遺留代碼。
既然在Json中有一些類需要以XML格式顯示一部分數據,另一部分(也可以是xml數據或二進制序列化數據的一部分)。
所以我在尋找一個
- 類不應該知道任何序列的特定屬性,而不是串行架構能夠提供足夠的工具來輕鬆做到系列化,而不觸及類的解決方案。
- 該框架應該允許持久保存我想要的私人和公共數據。這可以是特定於某個類或實例的,也可以是特定於某個上下文中某個實例的某些屬性的。
例如- SaveTemplate:應該從 樹
- SaveDocument的每個分支只能保存幾個節點:如果從樹 完全
- SavePackage保存一個分支:應該保存整個樹。
- 應該允許序列化爲不同的格式,如XML,二進制,JSON等出於不同的目的。
所以我打算評估某些序列化框架來實現相同。我發現Json.Net,可以給我下面的
- 沒有序列標籤被放在公共屬性,就像XML序列化。
- 向後兼容二進制序列化。即我不必更改二進制序列化接口實現
- 不需要參數較少的構造函數。
但是我仍然需要上面2)和3)中提到的能力。 我還沒有探索過Json。詳細的網絡或任何其他框架。
是否有任何框架可以幫助我實現?
這似乎是要走的路。我會留下更多的時間來看看其他的迴應,並決定接受答案 – keyr