ContextStack Osztály

Definíció

Olyan veremobjektumot biztosít, amelyet a szerializálók felhasználhatnak a beágyazott szerializálók számára való elérhetővé tételéhez.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Öröklődés
ContextStack

Példák

Az alábbi példakód bemutatja, hogyan lehet leküldni, ContextStack majd eltávolítani 10 értéket.

#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

Megjegyzések

Egyes szerializálók az objektumok környezetével kapcsolatos információkat igényelnek az állapotuk megfelelő megőrzéséhez. Az ContextStack osztály lehetővé teszi a szerializáló számára, hogy adatokat állítson be egy olyan objektum környezetéről, amely szerializálva van egy olyan verembe, amelyhez egy másik szerializáló hozzáférhet. A tulajdonság értékét a Context szerializálók használati adatainak megosztására szolgáló szolgáltatás IDesignerSerializationManager biztosítja.

A környezeti verem azért hasznos, mert a tervdokumentumok szerializálásának folyamata mélyen beágyazható, és a beágyazás egyes szintjeihez környezeti információkra lehet szükség az objektum állapotának megfelelő megőrzéséhez. A szerializáló a beágyazott szerializáló meghívása előtt beállíthat egy környezeti objektumot a veremhez. A veremre beállított összes objektumot el kell távolítania a szerializálónak, amely azt a beágyazott szerializáló hívása után állítja be.

A veremen lévő objektumok általában a szerializált aktuális objektum környezetéről tartalmaznak információkat. A szülő szerializáló környezeti információkat ad a veremhez a következő szerializálandó objektumról, meghív egy megfelelő szerializálót, és amikor a szerializáló befejezi a végrehajtást az objektumon, eltávolítja a környezeti információkat a veremből. Az egyes szerializálók implementálásán múlik annak meghatározása, hogy milyen objektumok kerülnek leküldésre ezen a veremen.

Példaként egy elnevezett Enabled tulajdonsággal rendelkező objektum adattípusa Boolean. Ha egy szerializáló ezt az értéket egy adatfolyamba írja, előfordulhat, hogy tartalmaznia kell az íráshoz tartozó környezetet vagy tulajdonságtípust. A szerializáló azonban nem rendelkezik ezzel az információval, mert csak az érték írására Boolean van utasítva. Ha meg szeretné adni ezeket az információkat a szerializálónak, a szülő szerializáló leküldhet egy PropertyDescriptor olyan elemet, amely a Enabled környezeti verem tulajdonságára mutat.

Konstruktorok

Name Description
ContextStack()

Inicializálja a ContextStack osztály új példányát.

Tulajdonságok

Name Description
Current

Lekéri az aktuális objektumot a veremen.

Item[Int32]

Lekéri az objektumot a veremen a megadott szinten.

Item[Type]

Lekéri a verem első objektumát, amely a megadott típust örökli vagy implementálja.

Metódusok

Name Description
Append(Object)

Hozzáfűz egy objektumot a verem végéhez ahelyett, hogy a verem tetejére nyomta volna.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Pop()

Eltávolítja az aktuális objektumot a veremből, visszaadva annak értékét.

Push(Object)

Leküldi vagy elhelyezi a megadott objektumot a verembe.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes:

Lásd még