ContextStack Klas

Definitie

Biedt een stackobject dat door een serialisatiefunctie kan worden gebruikt om informatie beschikbaar te maken voor geneste serializers.

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

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een ContextStack push gebruikt en vervolgens 10 waarden verwijdert.

#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

Opmerkingen

Voor sommige serializers is informatie over de context van een object vereist om de status correct te behouden. Met ContextStack de klasse kan een serializer gegevens instellen over de context van een object dat wordt geserialiseerd naar een stack waar een andere serializer toegang heeft tot het object. De waarde van de Context eigenschap wordt verstrekt door een IDesignerSerializationManager om informatie over gebruik te delen voor sommige serializers.

Een contextstack is handig omdat het proces van het serialiseren van een ontwerpdocument diep genest kan zijn en objecten op elk niveau van nesten mogelijk contextinformatie vereisen om de status van het object correct te behouden. Een serializer kan een contextobject instellen op de stack voordat u een geneste serialisatiefunctie aanroept. Elk object dat is ingesteld op de stack, moet worden verwijderd door de serialisatiefunctie die deze instelt nadat een aanroep naar een geneste serializer wordt geretourneerd.

Normaal gesproken bevatten de objecten op de stapel informatie over de context van het huidige object dat wordt geserialiseerd. Een bovenliggende serialisatiefunctie voegt contextinformatie toe aan de stack over het volgende object dat moet worden geserialiseerd, roept een geschikte serialisatiefunctie aan en verwijdert, wanneer de serialisatiefunctie klaar is met het uitvoeren van het object, de contextinformatie uit de stack. Het is aan de implementatie van elke serialisatiefunctie om te bepalen welke objecten op deze stack worden gepusht.

Een object met een eigenschap met de naam Enabled heeft bijvoorbeeld een gegevenstype Boolean. Als een serializer deze waarde naar een gegevensstroom schrijft, moet deze mogelijk de context of het type eigenschap opnemen dat deze schrijft. De serializer beschikt echter niet over deze informatie, omdat deze alleen wordt geïnstrueerd om de Boolean waarde te schrijven. Als u deze informatie aan de serializer wilt verstrekken, kan de bovenliggende serialisatiefunctie een PropertyDescriptor die verwijst naar de Enabled eigenschap op de contextstack pushen.

Constructors

Name Description
ContextStack()

Initialiseert een nieuw exemplaar van de ContextStack klasse.

Eigenschappen

Name Description
Current

Hiermee haalt u het huidige object op de stapel op.

Item[Int32]

Hiermee haalt u het object op de stack op het opgegeven niveau op.

Item[Type]

Hiermee haalt u het eerste object op de stack op die het opgegeven type over neemt of implementeert.

Methoden

Name Description
Append(Object)

Voegt een object toe aan het einde van de stapel, in plaats van het naar de bovenkant van de stapel te duwen.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Pop()

Hiermee verwijdert u het huidige object van de stack en retourneert u de waarde.

Push(Object)

Duwt of plaatst het opgegeven object op de stapel.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook