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 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:
- Array
- DateTime
- Int16
- String
- ArrayList
- Double
- Int32
String[]- Boolean
- Enum
-
null(Nothing) - String.Empty
- Byte
- Hashtable
- Pair
- Triplet
- Char
- HybridDictionary
- Single
- Type
- Color
- IDictionary
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). |