2011-08-29 38 views
1

我從InProc會話切換到SQL服務器會話。目前,我的會話對象如下所示:會話:從InProc到SQL會話

public class UserSession{ 

    public string TheStrings {get;set;} 
    public int TheInts {get;set;} 

    public List<MyObjectModel> ListOfObjects {get;set;} 

} 

它基本上包含字符串,整數和對象列表。我所做的就是將這個對象存儲在會話中,然後當我需要訪問會話時,我可以編寫UserSession.TheStrings。

現在我正在將此轉換爲SQL會話,序列化正在發揮作用。我是否需要將[serializable]屬性僅添加到整個類中,還是還需要將它添加到所有MyObjectModels的類定義中?

謝謝。

回答

1

我很確定它會默認序列化,只要對象中的所有內容都是簡單類型即可。

SerializableAttribute Class

應用SerializableAttribute屬性的類型,以指示該類型的 實例可以被序列化。如果被序列化的對象 的圖形中的任何類型沒有應用SerializableAttribute屬性 ,公共語言運行庫 將拋出SerializationException。

應用SerializableAttribute屬性即使類也 實現ISerializable接口來控制序列化 過程。

所有類型的公共和私有字段由 SerializableAttribute標記默認情況下,序列化,除非該類型 實現ISerializable接口來重寫序列化 過程。默認的序列化過程不包括使用NonSerializedAttribute屬性標記的 字段。如果一個 可序列化類型的字段包含特定於特定環境的指針,句柄或其他一些數據結構,並且不可能在有意義的情況下在不同的環境中重構 ,那麼您可能想要應用NonSerializedAttribute屬性到那個領域。