Partager via


ContextStack Classe

Définition

Fournit un objet de pile qui peut être utilisé par un sérialiseur pour rendre les informations disponibles pour les sérialiseurs imbriqués.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Héritage
ContextStack

Exemples

L’exemple de code suivant illustre l’utilisation d’une ContextStack commande push, puis la suppression de 10 valeurs.

#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

Remarques

Certains sérialiseurs nécessitent des informations sur le contexte d’un objet pour conserver correctement leur état. La ContextStack classe permet à un sérialiseur de définir des données sur le contexte d’un objet sérialisé dans une pile où un autre sérialiseur peut y accéder. La valeur de la Context propriété est fournie par un partage d’informations IDesignerSerializationManager d’utilisation à certains sérialiseurs.

Une pile de contexte est utile, car le processus de sérialisation d’un document de conception peut être profondément imbriqué, et les objets à chaque niveau d’imbrication peuvent nécessiter des informations de contexte pour conserver correctement l’état de l’objet. Un sérialiseur peut définir un objet de contexte sur la pile avant d’appeler un sérialiseur imbriqué. Chaque objet défini sur la pile doit être supprimé par le sérialiseur qui l’a défini après un appel à un sérialiseur imbriqué.

En règle générale, les objets de la pile contiennent des informations sur le contexte de l’objet actuel en cours de sérialisation. Un sérialiseur parent ajoute des informations de contexte à la pile sur l’objet suivant à sérialiser, appelle un sérialiseur approprié et, lorsque le sérialiseur termine l’exécution sur l’objet, supprime les informations de contexte de la pile. Il incombe à l’implémentation de chaque sérialiseur de déterminer quels objets sont envoyés (push) sur cette pile.

Par exemple, un objet avec une propriété nommée Enabled a un type de Booleandonnées . Si un sérialiseur écrit cette valeur dans un flux de données, il peut être nécessaire d’inclure le contexte ou le type de propriété qu’il écrit. Toutefois, le sérialiseur n’a pas ces informations, car il est seulement demandé d’écrire la Boolean valeur. Pour fournir ces informations au sérialiseur, le sérialiseur parent peut envoyer (push) un PropertyDescriptor point vers la propriété sur la Enabled pile de contexte.

Constructeurs

Nom Description
ContextStack()

Initialise une nouvelle instance de la classe ContextStack.

Propriétés

Nom Description
Current

Obtient l’objet actuel sur la pile.

Item[Int32]

Obtient l’objet sur la pile au niveau spécifié.

Item[Type]

Obtient le premier objet de la pile qui hérite ou implémente le type spécifié.

Méthodes

Nom Description
Append(Object)

Ajoute un objet à la fin de la pile, plutôt que de l’envoyer en haut de la pile.

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
Pop()

Supprime l’objet actuel de la pile, retournant sa valeur.

Push(Object)

Envoie (push) ou place l’objet spécifié sur la pile.

ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à

Voir aussi