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 | 字串 [] |
Boolean | Enum | null (Nothing ) |
String.Empty |
Byte | Hashtable | Pair | Triplet |
Char | HybridDictionary | Single | Type |
Color | IDictionary |
此外,雖然傳統字串類型和字串陣列會寫入序列化二進位寫入器,但不會變更序列化二進位寫入器,但某些字串會藉由建立內部字串資料表來優化。 如果字串具有相關聯的 TypeConverter 物件,或是字串實際上是 類別的 IndexedString 實例,則字串會使用這些資料表進行優化。
如果上述類型實作 介面或以 SerializableAttribute 屬性裝飾,則上述類型會使用 BinaryFormatter 物件 ISerializable 進行二進位序列化。 類別 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)。 |