ContextStack Třída

Definice

Poskytuje objekt zásobníku, který může serializátor použít k tomu, aby informace k dispozici pro vnořené serializátory.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Dědičnost
ContextStack

Příklady

Následující příklad kódu ukazuje použití k nasouování a ContextStack pak odebrání 10 hodnot.

#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

Poznámky

Některé serializátory vyžadují informace o kontextu objektu pro správné zachování jejich stavu. Třída umožňuje serializátor nastavit data o kontextu objektu, který je serializován do zásobníku, kde k ní může přistupovat ContextStack jiný serializátor. Hodnota vlastnosti je Context poskytován pro IDesignerSerializationManager sdílení informací o použití s některými serializátory.

Zásobník kontextu je užitečný, protože proces serializace dokumentu návrhu může být vnořená hluboko a objekty na každé úrovni vnoření mohou vyžadovat kontextové informace ke správnému zachování stavu objektu. Serializátor může objekt kontextu nastavit do zásobníku před vyvoláním vnořeného serializátoru. Každý objekt nastavený na zásobník by měl být odebrán serializátorem, který ho nastaví po volání vnořeného serializátoru vrátí.

Objekty v zásobníku obvykle obsahují informace o kontextu aktuálního objektu, který je serializován. Nadřazený serializátor přidá informace o kontextu do zásobníku o další objekt k serializaci, volá odpovídající serializátor a, jakmile serializátor dokončí provádění objektu, odebere informace o kontextu ze zásobníku. Je na implementaci každého serializátor k určení, které objekty se vkládat do tohoto zásobníku.

Například objekt s vlastností s Enabled názvem má datový typ Boolean . Pokud serializátor zapíše tuto hodnotu do datového proudu, může být nutné zahrnout kontext nebo typ vlastnosti, která zapisuje. Serializátor tyto informace nemá, protože má pouze pokyn k zápisu Boolean hodnoty. Chcete-li poskytnout tyto informace serializátor, nadřazený serializátor může nahánět, že odkazuje PropertyDescriptor Enabled na vlastnost v zásobníku kontextu.

Konstruktory

ContextStack()

Inicializuje novou instanci ContextStack třídy .

Vlastnosti

Current

Získá aktuální objekt v zásobníku.

Item[Int32]

Získá objekt v zásobníku na zadané úrovni.

Item[Type]

Získá první objekt v zásobníku, který dědí z nebo implementuje zadaný typ.

Metody

Append(Object)

Připojí objekt na konec zásobníku, místo aby ho nasazoval do horní části zásobníku.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří kopii aktuálního seznamu Object .

(Zděděno od Object)
Pop()

Odebere aktuální objekt ze zásobníku a vrátí jeho hodnotu.

Push(Object)

Předá zadaný objekt do zásobníku (nebo ho umístí).

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také