ContextStack Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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) |