2013-08-05 33 views
6

我有可能會或可能不包含相同類型指定如何序列化我的對象,如果它是在一個列表

Class Items 
{ 
    List<Items> SubItems ... 

} 

類本身是可序列化的項目列表的比較複雜的類,但其將成爲一個巨大的浪費空間來序列化列表中的對象,因爲它們被序列化並添加到數據庫中,然後才被包含在列表中。

有沒有一種方法,我可以指定列表應該被表示爲整數列表時,它的序列化?

注意:這些整數將表示序列化對象所在行的主鍵。

+2

你正在使用什麼樣的序列化? XML,Json?二進制? – Jay

回答

1

有沒有辦法,我可以指定列表中應派代表作爲 整數時,其系列化的列表的方式嗎?

是的。有兩個主要選項:

1)執行ISerializable-接口,您可以在其中控制對象如何被序列化/反序列化。

OR

2)聲明您的列表爲[NonSerialized],還可以管理一個私人會員列表,其中包含您的主鍵。不過,您必須實現自己加載/存儲整數列表的邏輯。

如果您的類需要序列化,我會向您推薦第二種方法,因爲在另一種情況下,您必須手動序列化/反序列化每個屬性。

1

如果你只想節省空間,你可以用DataContractSerializer來實現。它有preserveObjectReference選項。其中不重複相同的對象,而只存儲referenceId。
細節here

相關問題