ContextStack Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje objekt zásobníku, který lze použít serializátor k zpřístupnění informací 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 ContextStack nasdílení a 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 správně zachovat svůj stav. Třída ContextStack umožňuje serializátor nastavit data o kontextu objektu, který je serializován do zásobníku, kde k němu může přistupovat jiný serializátor. Hodnota Context vlastnosti je poskytována IDesignerSerializationManager ke sdílení informací o použití s některými serializátory.
Kontextový zásobník je užitečný, protože proces serializace dokumentu návrhu může být hluboce vnořený a objekty na každé úrovni vnoření mohou vyžadovat kontextové informace správně zachovat stav objektu. Serializátor může nastavit objekt kontextu zásobníku před vyvoláním vnořené serializátor. Každý objekt nastavený na zásobník by měl být odebrán serializátorem, který jej nastavil po volání vnořené serializátor vrátí.
Obvykle objekty v zásobníku obsahují informace o kontextu aktuálního objektu, který je serializován. Nadřazený serializátor přidá kontextové informace do zásobníku o dalším objektu, který má být serializován, volá příslušný serializátor a, když serializátor dokončí provádění na objektu, odebere kontextové informace ze zásobníku. Je na implementaci každého serializátoru určit, jaké objekty se nasdílí v tomto zásobníku.
Například objekt s vlastností s názvem Enabled
má datový typ Boolean. Pokud serializátor zapisuje tuto hodnotu do datového streamu, může potřebovat zahrnout kontext nebo typ vlastnosti, kterou zapisuje. Serializátor nemá tyto informace, ale, protože je pouze pokyn k zápisu Boolean hodnoty. Chcete-li poskytnout tyto informace serializátoru, nadřazený serializátor může odeslat PropertyDescriptor , který odkazuje Enabled
na vlastnost v kontextovém zásobníku.
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 zasunul 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í hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Pop() |
Odebere aktuální objekt ze zásobníku a vrátí jeho hodnotu. |
Push(Object) |
Vloží (neboli umístí) zadaný objekt do zásobníku. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |