Sdílet prostřednictvím


ObjectStateFormatter Třída

Definice

Serializuje a deserializuje grafy objektů, které představují stav objektu. Tuto třídu nelze zdědit.

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
Dědičnost
ObjectStateFormatter
Implementuje

Příklady

Následující příklad kódu ukazuje, jak třída, která odvozuje z PageStatePersister třídy přístup k StateFormatter vlastnosti načtení ObjectStateFormatter instance pro serializaci stavu zobrazení a řízení stavu streamu. Tento příklad kódu je součástí většího příkladu poskytnutého PageStatePersister pro třídu.

//
// 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

Poznámky

Upozornění

BinaryFormatter je nezabezpečená a nelze ji nastavit jako zabezpečenou. Další informace najdete v příručce zabezpečení BinaryFormatter.

Třída ObjectStateFormatter serializuje a deserializuje grafy stavu objektu v kompaktním formátu.

ObjectStateFormatter je používán třídou a třídami PageStatePersister odvozenými z ní k serializaci stavu zobrazení a stavu řízení. Třída ji také používá LosFormatter k poskytování formátování grafu stavu objektu pro různé části infrastruktury ASP.NET.

Třída ObjectStateFormatter je optimalizovaná pro serializaci a formátování mnoha běžných typů odkazů .NET Framework, stejně jako konstanty. Následující tabulka uvádí typy, které jsou optimalizované.

Array DateTime Int16 String
ArrayList Double Int32 Řetězec []
Boolean Enum null (Nothing) String.Empty
Byte Hashtable Pair Triplet
Char HybridDictionary Single Type
Color IDictionary

Kromě toho, zatímco běžné typy řetězců a pole řetězců jsou zapsány do a ze serializovaného binárního zapisovače bez omezení, některé řetězce jsou optimalizované vytvořením interních řetězcových tabulek. Řetězce jsou optimalizované pomocí těchto tabulek, pokud řetězec má přidružený TypeConverter objekt nebo pokud je řetězec ve skutečnosti instancí IndexedString třídy.

Jiné typy, které nejsou uvedené výše, jsou binární serializovány pomocí objektu BinaryFormatter , pokud implementují ISerializable rozhraní nebo jsou zdobeny atributem SerializableAttribute . Třída ObjectStateFormatter není optimalizovaná pro žádný z těchto serializovatelných typů.

ObjectStateFormatter Pokud třída narazí na typ, který není serializovatelný, ArgumentException je vyvolán výjimka.

Konstruktory

ObjectStateFormatter()

Inicializuje novou instanci ObjectStateFormatter třídy.

Metody

Deserialize(Stream)

Deserializuje graf stavu objektu z binární serializované formy, která je obsažena v zadaném Stream objektu.

Deserialize(String)

Deserializuje graf stavu objektu ze svého serializovaného řetězce s kódováním base64.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
Serialize(Object)

Serializuje graf stavu objektu na řetězec s kódováním base64.

Serialize(Stream, Object)

Serializuje graf stavu objektu na zadaný Stream objekt.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

IFormatter.Binder

Popis tohoto člena naleznete v tématu Binder.

IFormatter.Context

Popis tohoto člena naleznete v tématu Context.

IFormatter.Deserialize(Stream)

Popis tohoto člena naleznete v tématu Deserialize(Stream).

IFormatter.Serialize(Stream, Object)

Popis tohoto člena naleznete v tématu Serialize(Stream, Object).

IFormatter.SurrogateSelector

Popis tohoto člena naleznete v tématu SurrogateSelector.

IStateFormatter.Deserialize(String)

Popis tohoto člena naleznete v tématu Deserialize(String).

IStateFormatter.Serialize(Object)

Popis tohoto člena naleznete v tématu Serialize(Object).

Platí pro