ObjectStateFormatter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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). |