ContextStack 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
정보를 중첩된 serializer에 사용할 수 있게 할 serializer가 사용하는 스택 개체를 제공합니다.
public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
- 상속
-
ContextStack
예제
다음 코드 예제에서는 ContextStack 를 푸시한 다음 10 개의 값을 제거 합니다.
#using <System.Windows.Forms.dll>
#using <System.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::ComponentModel::Design::Serialization;
using namespace System::Windows::Forms;
int main()
{
// Create a ContextStack.
ContextStack^ stack = gcnew ContextStack;
// Push ten items on to the stack and output the value of each.
for ( int number = 0; number < 10; number++ )
{
Console::WriteLine( "Value pushed to stack: {0}", number );
stack->Push( number );
}
// Pop each item off the stack.
Object^ item = nullptr;
while ( (item = stack->Pop()) != 0 )
Console::WriteLine( "Value popped from stack: {0}", item );
}
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Windows.Forms;
namespace ContextStackExample
{
class ContextStackExample
{
[STAThread]
static void Main(string[] args)
{
// Create a ContextStack.
ContextStack stack = new ContextStack();
// Push ten items on to the stack and output the value of each.
for( int number = 0; number < 10; number ++ )
{
Console.WriteLine( "Value pushed to stack: "+number.ToString() );
stack.Push( number );
}
// Pop each item off the stack.
object item = null;
while( (item = stack.Pop()) != null )
Console.WriteLine( "Value popped from stack: "+item.ToString() );
}
}
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.ComponentModel.Design.Serialization
Module ContextStackExample
Sub Main()
' Create a ContextStack.
Dim stack As New ContextStack
' Push ten items on to the stack and output the value of each.
Dim number As Integer
For number = 0 To 9
Console.WriteLine(("Value pushed to stack: " + number.ToString()))
stack.Push(number)
Next number
' Pop each item off the stack.
Dim item As Object = stack.Pop()
While item IsNot Nothing
Console.WriteLine(("Value popped from stack: " + item.ToString()))
item = stack.Pop()
End While
End Sub
End Module
설명
일부 serializer는 상태를 올바로 유지하기 위해 개체의 컨텍스트 정보가 필요합니다. ContextStack 클래스를 사용 하면 serializer가 다른 serializer 액세스할 수 있는 스택에 serialize 되는 개체의 컨텍스트에 대 한 데이터를 설정 합니다. 값을 Context 에서 제공 하는 속성은 IDesignerSerializationManager 일부 serializer 사용 하 여의 정보를 공유 하 합니다.
컨텍스트 스택을 디자인 문서를 직렬화 하는 작업의 프로세스는 긴밀 하 게 중첩할 수 및 각 중첩 수준에 있는 개체는 개체의 상태를 올바로 유지 하기 위해 컨텍스트 정보를 필요로 하기 때문에 유용 합니다. 직렬 변환기를 중첩 된 serializer를 호출 하기 전에 스택에 컨텍스트 개체를 설정할 수 있습니다. 스택의로 설정 하는 각 개체는 중첩 된 serializer에 대 한 호출에서 반환 된 후이 설정 하는 serializer에 의해 제거 되어야 합니다.
일반적으로 스택에 개체가 serialize 되는 현재 개체의 컨텍스트에 대 한 정보를 포함 합니다. 부모 serializer 스택에 serialize 다음 개체에 대 한 컨텍스트 정보를 추가 경우 적절 한 serializer를 호출 하며, serializer가 개체의 실행을 마치면 스택에서 컨텍스트 정보를 제거 합니다. 어떤 개체가 스택에 푸시되 지 확인 하려면 각 serializer의 구현에 따라 것입니다.
예를 들어, 개체 속성을 사용 하 여 이름이 Enabled
의 데이터 형식이 Boolean합니다. Serializer는 데이터 스트림에이 값을 씁니다, 컨텍스트 또는 작성 하면 속성의 형식을 포함 하도록 해야 합니다. 그러나 Serializer이이 정보가 없는, 쓸 지시만 있으므로 Boolean 값입니다. 직렬 변환기에이 정보를 제공 하려면 부모 serializer를 푸시할 수는 PropertyDescriptor 가리키는 Enabled
컨텍스트 스택에 속성입니다.
생성자
ContextStack() |
ContextStack 클래스의 새 인스턴스를 초기화합니다. |
속성
Current |
현재 스택에 있는 개체를 가져옵니다. |
Item[Int32] |
지정된 수준에 있는 스택의 개체를 가져옵니다. |
Item[Type] |
상속하거나 지정된 형식을 구현하는 스택의 첫 번째 개체를 가져옵니다. |
메서드
Append(Object) |
개체를 스택의 맨 위에 푸시하지 않고 스택의 맨 아래에 추가합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
Pop() |
스택에서 현재 개체를 제거하고 이 개체의 값을 반환합니다. |
Push(Object) |
지정된 개체를 스택에 푸시하거나 저장합니다. |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
적용 대상
추가 정보
.NET