ObjectStateFormatter.Deserialize 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將序列化形式的物件狀態圖還原序列化。
多載
Deserialize(Stream) |
將包含在指定之 Stream 物件的二進位序列化形式的物件狀態圖還原序列化。 |
Deserialize(String) |
將序列化 Base64 編碼字串形式的物件狀態圖還原序列化。 |
備註
重要
使用不信任的資料呼叫此方法,會造成安全性上的風險。 呼叫此方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入。
Deserialize(Stream)
將包含在指定之 Stream 物件的二進位序列化形式的物件狀態圖還原序列化。
public:
System::Object ^ Deserialize(System::IO::Stream ^ inputStream);
public object Deserialize (System.IO.Stream inputStream);
member this.Deserialize : System.IO.Stream -> obj
Public Function Deserialize (inputStream As Stream) As Object
參數
- inputStream
- Stream
Stream,ObjectStateFormatter 將其還原序列化為初始化的 object
。
傳回
物件,表示還原序列化的物件狀態圖。
例外狀況
指定的 inputStream
為 null
。
還原序列化 Stream 期間,發生例外狀況。 例外狀況訊息會附加至 ArgumentException 的訊息。
範例
下列程式碼範例示範衍生自 類別的 PageStatePersister 類別如何初始化 ViewState 集合。 在此範例中 ViewState ,集合已指派給 First 物件的欄位 Pair ,並使用 類別序列化至檔案 ObjectStateFormatter 。 Load呼叫 方法時, Deserialize(Stream) 會使用 方法從檔案還原序列化檢視狀態,並 ViewState 初始化 屬性。 此程式碼範例是針對 類別提供的較大範例的 PageStatePersister 一部分。
//
// Load ViewState and ControlState.
//
public override void Load()
{
Stream stateStream = GetSecureStream();
// Read the state string, using the StateFormatter.
StreamReader reader = new StreamReader(stateStream);
IStateFormatter formatter = this.StateFormatter;
string fileContents = reader.ReadToEnd();
// Deserilize returns the Pair object that is serialized in
// the Save method.
Pair statePair = (Pair)formatter.Deserialize(fileContents);
ViewState = statePair.First;
ControlState = statePair.Second;
reader.Close();
stateStream.Close();
}
'
' Load ViewState and ControlState.
'
Public Overrides Sub Load()
Dim stateStream As Stream
stateStream = GetSecureStream()
' Read the state string, using the StateFormatter.
Dim reader As New StreamReader(stateStream)
Dim serializedStatePair As String
serializedStatePair = reader.ReadToEnd
Dim statePair As Pair
Dim formatter As IStateFormatter
formatter = Me.StateFormatter
' Deserilize returns the Pair object that is serialized in
' the Save method.
statePair = CType(formatter.Deserialize(serializedStatePair), Pair)
ViewState = statePair.First
ControlState = statePair.Second
reader.Close()
stateStream.Close()
End Sub
備註
使用 方法序列化 Serialize 的任何物件狀態圖都可以使用 Deserialize 方法還原序列化。 方法 Deserialize(Stream) 可用來還原儲存在 中的 Stream 物件狀態圖表,例如 FileStream 。
重要
使用不信任的資料呼叫此方法,會造成安全性上的風險。 呼叫此方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入。
適用於
Deserialize(String)
將序列化 Base64 編碼字串形式的物件狀態圖還原序列化。
public:
System::Object ^ Deserialize(System::String ^ inputString);
public object Deserialize (string inputString);
member this.Deserialize : string -> obj
Public Function Deserialize (inputString As String) As Object
參數
- inputString
- String
ObjectStateFormatter 還原序列化為初始化物件的字串。
傳回
物件,表示還原序列化的物件狀態圖。
例外狀況
指定的 inputString
為 null
或其 Length 為 0。
序列化資料無效。
在還原序列化檢視狀態時,執行機器驗證碼 (MAC) 驗證檢查失敗。
範例
下列程式碼範例示範如何實作方法,以還原序列化 base64 編碼的字串,並傳回 ICollection 屬性設定的集合。 此程式碼範例依賴已使用 ObjectStateFormatter 類別序列化的屬性設定,如 方法所示 Serialize(Object) 。
private ICollection LoadControlProperties (string serializedProperties) {
ICollection controlProperties = null;
// Create an ObjectStateFormatter to deserialize the properties.
ObjectStateFormatter formatter = new ObjectStateFormatter();
// Call the Deserialize method.
controlProperties = (ArrayList) formatter.Deserialize(serializedProperties);
return controlProperties;
}
Private Function LoadControlProperties(serializedProperties As String) As ICollection
Dim controlProperties As ICollection = Nothing
' Create an ObjectStateFormatter to deserialize the properties.
Dim formatter As New ObjectStateFormatter()
' Call the Deserialize method.
controlProperties = CType(formatter.Deserialize(serializedProperties), ArrayList)
Return controlProperties
End Function 'LoadControlProperties
備註
使用 方法序列化 Serialize 的任何物件狀態圖都可以使用 Deserialize 方法還原序列化。 方法 Deserialize(String) 可用來還原儲存在 base64 編碼字串表單中的物件狀態圖表。
重要
使用不信任的資料呼叫此方法,會造成安全性上的風險。 呼叫此方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入。