ObjectStateFormatter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
序列化和反序列化表示对象状态的对象图。 无法继承此类。
public ref class ObjectStateFormatter sealed : System::Runtime::Serialization::IFormatter, System::Web::UI::IStateFormatter
public ref class ObjectStateFormatter sealed : System::Runtime::Serialization::IFormatter
public sealed class ObjectStateFormatter : System.Runtime.Serialization.IFormatter, System.Web.UI.IStateFormatter
public sealed class ObjectStateFormatter : System.Runtime.Serialization.IFormatter
type ObjectStateFormatter = class
interface IStateFormatter
interface IFormatter
Public NotInheritable Class ObjectStateFormatter
Implements IFormatter, IStateFormatter
Public NotInheritable Class ObjectStateFormatter
Implements IFormatter
- 继承
-
ObjectStateFormatter
- 实现
示例
下面的代码示例演示从 PageStatePersister 类派生的类如何访问 StateFormatter 属性以检索 ObjectStateFormatter 实例以将视图状态和控制状态序列化为流。 该代码示例是 PageStatePersister 类中的一个较大示例的一部分。
//
// Persist any ViewState and ControlState.
//
public override void Save()
{
if (ViewState != null || ControlState != null)
{
if (Page.Session != null)
{
Stream stateStream = GetSecureStream();
StreamWriter writer = new StreamWriter(stateStream);
IStateFormatter formatter = this.StateFormatter;
Pair statePair = new Pair(ViewState, ControlState);
// Serialize the statePair object to a string.
string serializedState = formatter.Serialize(statePair);
writer.Write(serializedState);
writer.Close();
stateStream.Close();
}
else
{
throw new InvalidOperationException("Session needed for StreamPageStatePersister.");
}
}
}
'
' Persist any ViewState and ControlState.
'
Public Overrides Sub Save()
If Not (ViewState Is Nothing) OrElse Not (ControlState Is Nothing) Then
If Not (Page.Session Is Nothing) Then
Dim stateStream As Stream
stateStream = GetSecureStream()
' Write a state string, using the StateFormatter.
Dim writer As New StreamWriter(stateStream)
Dim formatter As IStateFormatter
formatter = Me.StateFormatter
Dim statePair As New Pair(ViewState, ControlState)
Dim serializedState As String
serializedState = formatter.Serialize(statePair)
writer.Write(serializedState)
writer.Close()
stateStream.Close()
Else
Throw New InvalidOperationException("Session needed for StreamPageStatePersister.")
End If
End If
End Sub
注解
警告
BinaryFormatter 不安全,无法确保安全。 有关详细信息,请参阅 BinaryFormatter 安全指南。
类 ObjectStateFormatter 以紧凑格式序列化和反序列化对象状态图。
ObjectStateFormatter 由 PageStatePersister 派生自它的类和类用来序列化视图状态和控制状态。 该类还使用它 LosFormatter 为 ASP.NET 基础结构的各个部分提供对象状态图格式。
该 ObjectStateFormatter 类经过优化,可序列化和格式化许多常见的 .NET Framework 引用类型以及常量。 以下类型已优化:
- Array
- DateTime
- Int16
- String
- ArrayList
- Double
- Int32
String[]- Boolean
- Enum
-
null(Nothing) - String.Empty
- Byte
- Hashtable
- Pair
- Triplet
- Char
- HybridDictionary
- Single
- Type
- Color
- IDictionary
此外,尽管传统字符串类型和字符串数组在序列化的二进制编写器中未更改,但通过创建内部字符串表来优化某些字符串。 如果字符串具有关联的 TypeConverter 对象,或者字符串实际上是类的 IndexedString 实例,则使用这些表优化字符串。
上面未列出的其他类型的是使用BinaryFormatter对象进行二进制序列化(如果对象实现ISerializable接口或用特性修饰)。SerializableAttribute 该 ObjectStateFormatter 类未针对这些可序列化类型中的任何一种进行优化。
ObjectStateFormatter如果类遇到不可序列化的类型,ArgumentException则会引发异常。
构造函数
| 名称 | 说明 |
|---|---|
| ObjectStateFormatter() |
初始化 ObjectStateFormatter 类的新实例。 |
方法
| 名称 | 说明 |
|---|---|
| Deserialize(Stream) |
从包含在指定 Stream 对象中的二进制序列化形式反序列化对象状态图。 |
| Deserialize(String) |
从其序列化的 base64 编码字符串形式反序列化对象状态图。 |
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| Serialize(Object) |
将对象状态图序列化为 base64 编码的字符串。 |
| Serialize(Stream, Object) |
将对象状态图序列化为指定的 Stream 对象。 |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IFormatter.Binder |
有关此成员的说明,请参阅 Binder。 |
| IFormatter.Context |
有关此成员的说明,请参阅 Context。 |
| IFormatter.Deserialize(Stream) |
有关此成员的说明,请参阅 Deserialize(Stream)。 |
| IFormatter.Serialize(Stream, Object) |
有关此成员的说明,请参阅 Serialize(Stream, Object)。 |
| IFormatter.SurrogateSelector |
有关此成员的说明,请参阅 SurrogateSelector。 |
| IStateFormatter.Deserialize(String) |
有关此成员的说明,请参阅 Deserialize(String)。 |
| IStateFormatter.Serialize(Object) |
有关此成员的说明,请参阅 Serialize(Object)。 |