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 파생 되는 클래스 뷰 상태 및 스트림에 컨트롤 상태를 serialize 하는 인스턴스를 ObjectStateFormatter 검색 하는 속성에 액세스 StateFormatter 하는 방법을 보여 줍니다. 이 코드 예제는 클래스에 제공된 더 큰 예제의 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 는 뷰 상태 및 컨트롤 상태를 serialize하기 위해 파생되는 클래스 및 클래스에서 사용됩니다 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
또한 기존 문자열 형식 및 문자열 배열은 serialize된 이진 작성기에 대한 변경 없이 기록되지만 일부 문자열은 내부 문자열 테이블을 만들어 최적화됩니다. 문자열에 연결된 TypeConverter 개체가 있거나 문자열이 실제로 클래스의 인스턴스인 경우 이러한 테이블을 사용하여 문자열이 IndexedString 최적화됩니다.
위에 나열되지 않은 다른 형식은 인터페이스를 구현하거나 특성으로 BinaryFormatterSerializableAttribute 데코레이팅된 경우 개체를 ISerializable 사용하여 이진 serialize됩니다. 클래스는 ObjectStateFormatter 이러한 직렬화 가능한 형식에 대해 최적화되지 않습니다.
클래스에서 ObjectStateFormatter 직렬화할 수 없는 형식이 발견되면 예외가 ArgumentException throw됩니다.
생성자
| Name | Description |
|---|---|
| ObjectStateFormatter() |
ObjectStateFormatter 클래스의 새 인스턴스를 초기화합니다. |
메서드
| Name | 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) |
명시적 인터페이스 구현
| Name | 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). |