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
String[]- Boolean
- Enum
-
null(Nothing) - String.Empty
- Byte
- Hashtable
- Pair
- Triplet
- Char
- HybridDictionary
- Single
- Type
- Color
- IDictionary
Кроме того, в то время как обычные типы строк и массивы строк записываются в сериализованный двоичный модуль записи, некоторые строки оптимизированы путем создания внутренних строковых таблиц. Строки оптимизированы с помощью этих таблиц, если строка имеет связанный 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). |