다음을 통해 공유


ContextStack 클래스

정의

serializer에서 중첩된 serializer에 정보를 제공하는 데 사용할 수 있는 스택 개체를 제공합니다.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
상속
ContextStack

예제

다음 코드 예제에서는 10개의 값을 푸시한 다음 제거하는 방법을 보여 ContextStack 줍니다.

#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 은 사용 정보를 일부 serializer에 공유하기 위해 제공됩니다 IDesignerSerializationManager .

컨텍스트 스택은 디자인 문서를 직렬화하는 프로세스를 깊이 중첩할 수 있고 각 중첩 수준의 개체가 개체의 상태를 올바르게 유지하기 위해 컨텍스트 정보가 필요할 수 있기 때문에 유용합니다. serializer는 중첩된 serializer를 호출하기 전에 컨텍스트 개체를 스택으로 설정할 수 있습니다. 스택에 설정된 각 개체는 중첩된 serializer에 대한 호출이 반환된 후 설정한 serializer에 의해 제거되어야 합니다.

일반적으로 스택의 개체에는 직렬화되는 현재 개체의 컨텍스트에 대한 정보가 포함됩니다. 부모 serializer는 serialize할 다음 개체에 대한 컨텍스트 정보를 스택에 추가하고, 적절한 serializer를 호출하고, serializer가 개체에서 실행을 완료하면 스택에서 컨텍스트 정보를 제거합니다. 이 스택에서 푸시되는 개체를 결정하는 것은 각 serializer의 구현에 달려 있습니다.

예를 들어 이름이 지정된 Enabled 속성이 있는 개체의 데이터 형식 Boolean은 다음과 같습니다. serializer가 이 값을 데이터 스트림에 쓰는 경우 작성 중인 속성의 컨텍스트 또는 형식을 포함해야 할 수 있습니다. 그러나 직렬 변환기에는 값만 작성 Boolean 하라는 지시가 있으므로 이 정보가 없습니다. 직렬 변환기에서 이 정보를 제공하기 위해 부모 직렬 변환기는 컨텍스트 스택의 Enabled 속성을 가리키는 값을 푸시 PropertyDescriptor 할 수 있습니다.

생성자

Name Description
ContextStack()

ContextStack 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
Current

스택의 현재 개체를 가져옵니다.

Item[Int32]

지정된 수준에서 스택의 개체를 가져옵니다.

Item[Type]

지정된 형식에서 상속하거나 구현하는 스택의 첫 번째 개체를 가져옵니다.

메서드

Name Description
Append(Object)

개체를 스택의 맨 위에 푸시하지 않고 스택의 끝에 추가합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Pop()

스택에서 현재 개체를 제거하고 해당 값을 반환합니다.

Push(Object)

지정된 개체를 스택에 푸시하거나 배치합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보