Partage via


ContextStack Classe

Définition

Fournit un objet de pile pouvant être utilisé par un sérialiseur pour mettre des informations à la disposition de 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’un ContextStack pour envoyer (push) puis supprimer 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 requièrent des informations sur le contexte d'un objet pour rendre leur état correctement persistant. La ContextStack classe permet à un sérialiseur de définir des données sur le contexte d’un objet sérialisé dans une pile à laquelle un autre sérialiseur peut y accéder. La valeur de la Context propriété est fournie par un IDesignerSerializationManager pour partager des informations d’utilisation avec certains sérialiseurs.

Une pile de contextes 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 le définit après un appel à un sérialiseur imbriqué retourné.

En règle générale, les objets de la pile contiennent des informations sur le contexte de l’objet actuel qui est sérialisé. Un sérialiseur parent ajoute des informations de contexte à la pile sur l’objet suivant à sérialiser, appelle un sérialiseur approprié et, lorsque l’exécution du sérialiseur se termine 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 sur cette pile.

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

Constructeurs

ContextStack()

Initialise une nouvelle instance de la classe ContextStack.

Propriétés

Current

Obtient l'objet en cours dans la pile.

Item[Int32]

Obtient l'objet de la pile, au niveau spécifié.

Item[Type]

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

Méthodes

Append(Object)

Ajoute un objet à la fin de la pile au lieu de le pousser au sommet de celle-ci.

Equals(Object)

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

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Pop()

Supprime l'objet en cours de la pile en retournant sa valeur.

Push(Object)

Exécute un push de l'objet spécifié, ou place l'objet, dans la pile.

ToString()

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

(Hérité de Object)

S’applique à

Voir aussi