Sdílet prostřednictvím


ObjectStateFormatter Třída

Definice

Serializuje a deserializuje objektové grafy, 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á je odvozena z PageStatePersister třídy přistupuje k StateFormatter vlastnosti načíst ObjectStateFormatter instanci pro serializaci stav zobrazení a stav ovládacího prvku do datového proudu. Tento příklad kódu je součástí většího příkladu uvedeného pro třídu 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

Poznámky

Výstraha

BinaryFormatter je nezabezpečený a nedá se zabezpečit. Další informace naleznete v příručce zabezpečení BinaryFormatter.

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

ObjectStateFormatter je používána PageStatePersister třídou a třídami 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 referenčních typů rozhraní .NET Framework a také konstant. Optimalizují se následující typy:

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

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

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

Konstruktory

Name Description
ObjectStateFormatter()

Inicializuje novou instanci ObjectStateFormatter třídy.

Metody

Name Description
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 serializovaného řetězcového formuláře s kódováním base64.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

Slouží jako výchozí funkce hash.

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

Získá Type aktuální instance.

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

Vytvoří mělkou kopii aktuálního Object.

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

Serializuje graf stavu objektu na řetězec kódovaný v 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í

Name Description
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