Partilhar via


ContextStack Classe

Definição

Fornece um objeto de pilha que pode ser usado por um serializador para disponibilizar informações para serializadores aninhados.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Herança
ContextStack

Exemplos

O exemplo de código a seguir demonstra como usar um ContextStack para efetuar push e, em seguida, remover 10 valores.

#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

Comentários

Alguns serializadores exigem informações sobre o contexto de um objeto para persistir corretamente seu estado. A ContextStack classe permite que um serializador defina dados sobre o contexto de um objeto que está sendo serializado para uma pilha em que outro serializador pode acessá-lo. O valor da Context propriedade é fornecido por um IDesignerSerializationManager para compartilhar informações de uso para alguns serializadores.

Uma pilha de contexto é útil porque o processo de serialização de um documento de design pode ser profundamente aninhado e objetos em cada nível de aninhamento podem exigir informações de contexto para persistir corretamente o estado do objeto. Um serializador pode definir um objeto de contexto para a pilha antes de invocar um serializador aninhado. Cada objeto definido como a pilha deve ser removido pelo serializador que o define depois que uma chamada para um serializador aninhado é retornada.

Normalmente, os objetos na pilha contêm informações sobre o contexto do objeto atual que está sendo serializado. Um serializador pai adiciona informações de contexto à pilha sobre o próximo objeto a ser serializado, chama um serializador apropriado e, quando o serializador termina de executar no objeto, remove as informações de contexto da pilha. Cabe à implementação de cada serializador determinar quais objetos são enviados por push nessa pilha.

Por exemplo, um objeto com uma propriedade chamada Enabled tem um tipo de dados .Boolean Se um serializador gravar esse valor em um fluxo de dados, talvez seja necessário incluir o contexto ou o tipo de propriedade que está gravando. No entanto, o serializador não tem essas informações porque é instruído apenas a gravar o Boolean valor. Para fornecer essas informações ao serializador, o serializador pai pode efetuar push de um PropertyDescriptor que aponta para a Enabled propriedade na pilha de contexto.

Construtores

ContextStack()

Inicializa uma nova instância da classe ContextStack.

Propriedades

Current

Obtém o objeto atual na pilha.

Item[Int32]

Obtém o objeto na pilha no nível especificado.

Item[Type]

Obtém o primeiro objeto na pilha que herda do tipo especificado ou o implementa.

Métodos

Append(Object)

Acrescenta um objeto ao fim da pilha em vez de efetuar push do objeto para o topo da pilha.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Pop()

Remove o objeto atual da pilha, retornando seu valor.

Push(Object)

Efetua push ou coloca o objeto especificado na pilha.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também