Freigeben über


ContextStack Klasse

Definition

Stellt ein Stapelobjekt zur Verfügung, das von einem Serialisierungsprogramm verwendet werden kann, um geschachtelten Serialisierungsprogrammen Informationen zur Verfügung zu stellen.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Vererbung
ContextStack

Beispiele

Im folgenden Codebeispiel wird die Verwendung von zum ContextStack Pushen und Entfernen von 10 Werten veranschaulicht.

#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

Hinweise

Einige Serialisierungsprogramme benötigen Informationen zum Kontext eines Objekts, um jeweils den Status richtig beibehalten zu können. Die ContextStack -Klasse ermöglicht es einem Serialisierer, Daten über den Kontext eines Objekts festzulegen, das in einen Stapel serialisiert wird, auf den ein anderes Serialisierer darauf zugreifen kann. Der Wert der Context -Eigenschaft wird von bereitgestellt IDesignerSerializationManager , um Nutzungsinformationen für einige Serialisierer gemeinsam zu nutzen.

Ein Kontextstapel ist nützlich, da der Prozess der Serialisierung eines Entwurfsdokuments tief geschachtelt werden kann und Objekte auf jeder Schachtelungsebene Kontextinformationen benötigen, um den Zustand des Objekts ordnungsgemäß beizubehalten. Ein Serialisierer kann ein Kontextobjekt auf den Stapel festlegen, bevor ein geschachteltes Serialisierungsprogramm aufgerufen wird. Jedes auf den Stapel festgelegte Objekt sollte von dem Serialisierer entfernt werden, der es nach einem Aufruf eines geschachtelten Serialisierungsprogramms zurückgibt.

In der Regel enthalten die Objekte im Stapel Informationen zum Kontext des aktuellen Objekts, das serialisiert wird. Ein übergeordnetes Serialisierungsprogramm fügt dem Stapel Kontextinformationen über das nächste zu serialisierende Objekt hinzu, ruft ein entsprechendes Serialisierungsprogramm auf und entfernt die Kontextinformationen aus dem Stapel, wenn die Ausführung des Serialisierungsprogramms für das Objekt abgeschlossen ist. Es ist an der Implementierung jedes Serialisierungsprogramms zu bestimmen, welche Objekte in diesen Stapel gepusht werden.

Beispielsweise verfügt ein Objekt mit einer Eigenschaft namens Enabled über den Datentyp Boolean. Wenn ein Serialisierer diesen Wert in einen Datenstrom schreibt, muss er möglicherweise den Kontext oder typ der Eigenschaft einschließen, die er schreibt. Das Serialisierungsprogramm verfügt jedoch nicht über diese Informationen, da er nur angewiesen ist, den Boolean Wert zu schreiben. Um diese Informationen für das Serialisierungsprogramm bereitzustellen, kann das übergeordnete Serialisierungsprogramm ein pushen PropertyDescriptor , das auf die Enabled -Eigenschaft im Kontextstapel verweist.

Konstruktoren

ContextStack()

Initialisiert eine neue Instanz der ContextStack-Klasse.

Eigenschaften

Current

Ruft das aktuelle Objekt auf dem Stapel ab.

Item[Int32]

Ruft das Objekt im Stapel auf der angegebenen Ebene ab.

Item[Type]

Ruft das erste Objekt auf dem Stapel ab, das vom angegebenen Typ erbt oder diesen implementiert.

Methoden

Append(Object)

Hängt ein Objekt an das Ende des Stapels an, anstatt es auf der obersten Ebene des Stapels abzulegen.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Pop()

Entfernt das aktuelle Objekt vom Stapel und gibt seinen Wert zurück.

Push(Object)

Legt das angegebene Objekt auf dem Stapel ab.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen