共用方式為


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參考型別,以及常數。 下表列出優化的類型。

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 實例,則字串會使用這些資料表進行優化。

如果上述類型實作 介面或以 SerializableAttribute 屬性裝飾,則上述類型會使用 BinaryFormatter 物件 ISerializable 進行二進位序列化。 類別 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)

適用於