Freigeben über


ContextStack Klasse

Definition

Stellt ein Stapelobjekt bereit, das von einem Serialisierer verwendet werden kann, um Informationen für geschachtelte Serialisierer verfügbar zu machen.

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

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung eines ContextStack Push- und anschließenden Entfernens von 10 Werten.

#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 Serialisierer erfordern Informationen zum Kontext eines Objekts, um ihren Zustand ordnungsgemäß beizubehalten. Die ContextStack Klasse ermöglicht es einem Serialisierer, Daten über den Kontext eines Objekts festzulegen, das in einen Stapel serialisiert wird, auf den ein anderer Serialisierer zugreifen kann. Der Wert der Context Eigenschaft wird von einer IDesignerSerializationManager zur Freigabe von Informationen bereitgestellt, die für einige Serialisierer verwendet werden.

Ein Kontextstapel ist nützlich, da das Serialisieren eines Entwurfsdokuments tief geschachtelt werden kann, und Objekte auf jeder Schachtelungsebene erfordern möglicherweise Kontextinformationen, um den Zustand des Objekts ordnungsgemäß zu speichern. Ein Serialisierer kann ein Kontextobjekt auf den Stapel festlegen, bevor er einen geschachtelten Serialisierer aufruft. Jedes Objekt, das auf den Stapel festgelegt wurde, sollte vom Serialisierer entfernt werden, der es nach einem Aufruf eines geschachtelten Serialisierers festgelegt hat.

In der Regel enthalten die Objekte im Stapel Informationen zum Kontext des aktuellen Objekts, das serialisiert wird. Ein übergeordneter Serialisierer fügt dem Stapel Kontextinformationen zum nächsten zu serialisierenden Objekt hinzu, ruft einen geeigneten Serialisierer auf, und wenn der Serialisierer die Ausführung für das Objekt abgeschlossen hat, entfernt die Kontextinformationen aus dem Stapel. Es liegt bei der Implementierung jedes Serialisierers, um zu bestimmen, welche Objekte auf diesen Stapel übertragen werden.

Ein Objekt mit einer Benannten Enabled Eigenschaft hat beispielsweise einen Datentyp von Boolean. Wenn ein Serialisierer diesen Wert in einen Datenstrom schreibt, muss er möglicherweise den Kontext oder den Typ der Eigenschaft einschließen, die er schreibt. Der Serialisierer verfügt jedoch nicht über diese Informationen, da er nur angewiesen wird, den Boolean Wert zu schreiben. Um diese Informationen für den Serialisierer bereitzustellen, kann der übergeordnete Serialisierer ein PropertyDescriptor Element übertragen, das auf die Enabled Eigenschaft im Kontextstapel verweist.

Konstruktoren

Name Beschreibung
ContextStack()

Initialisiert eine neue Instanz der ContextStack-Klasse.

Eigenschaften

Name Beschreibung
Current

Ruft das aktuelle Objekt im Stapel ab.

Item[Int32]

Ruft das Objekt auf dem Stapel auf der angegebenen Ebene ab.

Item[Type]

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

Methoden

Name Beschreibung
Append(Object)

Fügt ein Objekt an das Ende des Stapels an, anstatt es an den Anfang des Stapels zu verschieben.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Pop()

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

Push(Object)

Verschiebt oder platziert das angegebene Objekt auf den Stapel.

ToString()

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

(Geerbt von Object)

Gilt für:

Weitere Informationen