ObjectStateFormatter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
序列化與反序列化代表物件狀態的物件圖。 無法繼承這個類別。
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 實例,則會利用這些表格進行優化。
其他未列出的類型若實作介面ISerializable或以SerializableAttribute屬性裝飾,則會透過BinaryFormatter物件進行二進位序列化。 這個 ObjectStateFormatter 類別並未針對這些可序列化類型進行最佳化。
若 ObjectStateFormatter 類別遇到無法序列化的型別, ArgumentException 則會拋出例外。
建構函式
| 名稱 | Description |
|---|---|
| ObjectStateFormatter() |
初始化 ObjectStateFormatter 類別的新執行個體。 |
方法
| 名稱 | Description |
|---|---|
| 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) |
明確介面實作
| 名稱 | Description |
|---|---|
| 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)。 |