共用方式為


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 安全性指南

ObjectStateFormatter 類別以緊湊格式序列化與反序列化物件狀態圖。

ObjectStateFormatter 由類別及其衍生類別用 PageStatePersister 來序列化視圖狀態與控制狀態。 該類別也用 LosFormatter 它來為 ASP.NET 基礎設施的各個部分提供物件狀態圖格式化。

ObjectStateFormatter 類別優化以序列化與格式化許多常見的 .NET Framework 參考類型,以及常數。 以下類型已優化:

此外,傳統字串型態與字串陣列是未被修改地寫入序列化二進位寫入者,但部分字串會透過建立內部字串表來優化。 若字串有相關 TypeConverter 物件或字串實際上是類別的 IndexedString 實例,則會利用這些表格進行優化。

其他未列出的類型若實作介面ISerializable或以SerializableAttribute屬性裝飾,則會透過BinaryFormatter物件進行二進位序列化。 這個 ObjectStateFormatter 類別並未針對這些可序列化類型進行最佳化。

ObjectStateFormatter 類別遇到無法序列化的型別, ArgumentException 則會拋出例外。

建構函式

名稱 Description
ObjectStateFormatter()

初始化 ObjectStateFormatter 類別的新執行個體。

方法

名稱 Description
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)

明確介面實作

名稱 Description
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)

適用於