ObjectStateFormatter 类

定义

序列化和反序列化表示对象状态的对象图。 此类不能被继承。

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 security guide (安全指南)。

ObjectStateFormatter 以紧凑格式序列化和反序列化对象状态图。

ObjectStateFormatterPageStatePersister 派生自它的类和类用来序列化视图状态和控制状态。 该类还使用它LosFormatter为 ASP.NET 基础结构的各个部分提供对象状态图格式。

ObjectStateFormatter类经过优化,可序列化和格式化许多常见的.NET Framework引用类型以及常量。 下表列出了已优化的类型。

Array DateTime Int16 String
ArrayList Double Int32 字符串 []
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)

适用于