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 编码字符串形式存储的对象状态图。

重要

使用不受信任的数据调用此方法存在安全风险。 仅使用受信任的数据调用此方法。 有关详细信息,请参阅 验证所有输入

适用于