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 编码字符串形式存储的对象状态图。
重要
使用不受信任的数据调用此方法存在安全风险。 仅使用受信任的数据调用此方法。 有关详细信息,请参阅 验证所有输入。