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 Security Guide.
Класс 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 класса.
Другие типы, не перечисленные выше, сериализуются в двоичном формате с помощью BinaryFormatter объекта, если они реализуют ISerializable интерфейс или декорируются атрибутом SerializableAttribute . Класс ObjectStateFormatter не оптимизирован для любого из этих сериализуемых типов.
ObjectStateFormatter Если класс сталкивается с типом, который не сериализуется, ArgumentException возникает исключение.
Конструкторы
ObjectStateFormatter() |
Инициализирует новый экземпляр класса ObjectStateFormatter. |
Методы
Deserialize(Stream) |
Выполняет десериализацию графа состояния объекта из двоичной сериализованной формы, которая содержится в указанном объекте Stream. |
Deserialize(String) |
Выполняет десериализацию графа состояния объекта из его сериализованной строковой формы на основе 64-разрядной кодировки. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Serialize(Object) |
Выполняет сериализацию графа состояния объекта в строку на основе 64-разрядной кодировки. |
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). |