我有可能會或可能不包含相同類型指定如何序列化我的對象,如果它是在一個列表
Class Items
{
List<Items> SubItems ...
}
類本身是可序列化的項目列表的比較複雜的類,但其將成爲一個巨大的浪費空間來序列化列表中的對象,因爲它們被序列化並添加到數據庫中,然後才被包含在列表中。
有沒有一種方法,我可以指定列表應該被表示爲整數列表時,它的序列化?
注意:這些整數將表示序列化對象所在行的主鍵。
我有可能會或可能不包含相同類型指定如何序列化我的對象,如果它是在一個列表
Class Items
{
List<Items> SubItems ...
}
類本身是可序列化的項目列表的比較複雜的類,但其將成爲一個巨大的浪費空間來序列化列表中的對象,因爲它們被序列化並添加到數據庫中,然後才被包含在列表中。
有沒有一種方法,我可以指定列表應該被表示爲整數列表時,它的序列化?
注意:這些整數將表示序列化對象所在行的主鍵。
有沒有辦法,我可以指定列表中應派代表作爲 整數時,其系列化的列表的方式嗎?
是的。有兩個主要選項:
1)執行ISerializable-接口,您可以在其中控制對象如何被序列化/反序列化。
OR
2)聲明您的列表爲[NonSerialized],還可以管理一個私人會員列表,其中包含您的主鍵。不過,您必須實現自己加載/存儲整數列表的邏輯。
如果您的類需要序列化,我會向您推薦第二種方法,因爲在另一種情況下,您必須手動序列化/反序列化每個屬性。
要指定對象是如何序列,你需要實現ISerializable的,併爲GetObjectData
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
}
的實現有這個MSDN網頁上的一個簡單的例子:
如果你只想節省空間,你可以用DataContractSerializer
來實現。它有preserveObjectReference選項。其中不重複相同的對象,而只存儲referenceId。
細節here
你正在使用什麼樣的序列化? XML,Json?二進制? – Jay