共用方式為


ObjectStateFormatter.Deserialize 方法

定義

將序列化形式的物件狀態圖還原序列化。

多載

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

StreamObjectStateFormatter 將其還原序列化為初始化的 object

傳回

物件,表示還原序列化的物件狀態圖。

例外狀況

指定的 inputStreamnull

還原序列化 Stream 期間,發生例外狀況。 例外狀況訊息會附加至 ArgumentException 的訊息。

範例

下列程式碼範例示範衍生自 類別的 PageStatePersister 類別如何初始化 ViewState 集合。 在此範例中 ViewState ,集合已指派給 First 物件的欄位 Pair ,並使用 類別序列化至檔案 ObjectStateFormatterLoad呼叫 方法時, 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 還原序列化為初始化物件的字串。

傳回

物件,表示還原序列化的物件狀態圖。

例外狀況

指定的 inputStringnull 或其 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 編碼字串表單中的物件狀態圖表。

重要

使用不信任的資料呼叫此方法,會造成安全性上的風險。 呼叫此方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入

適用於