Поделиться через


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 класса.

Другие типы, не перечисленные выше, сериализуются двоичными файлами с помощью 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).

Применяется к