ContextStack Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia obiekt stosu, który może być używany przez serializator do udostępniania informacji zagnieżdżonym serializatorom.
public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
- Dziedziczenie
-
ContextStack
Przykłady
W poniższym przykładzie kodu pokazano użycie metody ContextStack do wypchnięcia, a następnie usunięcie 10 wartości.
#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
Uwagi
Niektóre serializatory wymagają informacji o kontekście obiektu, aby poprawnie utrwalić ich stan. Klasa ContextStack umożliwia serializatorowi ustawianie danych dotyczących kontekstu obiektu, który jest serializowany do stosu, gdzie inny serializator może uzyskać do niego dostęp. Wartość Context właściwości jest dostarczana przez element IDesignerSerializationManager w celu udostępniania informacji o użyciu do niektórych serializatorów.
Stos kontekstu jest przydatny, ponieważ proces serializacji dokumentu projektowego może być głęboko zagnieżdżony, a obiekty na każdym poziomie zagnieżdżania mogą wymagać informacji kontekstowych, aby poprawnie utrwały stan obiektu. Serializator może ustawić obiekt kontekstu na stos przed wywołaniem zagnieżdżonego serializatora. Każdy obiekt ustawiony na stos powinien zostać usunięty przez serializator, który ustawi go po wywołaniu zagnieżdżonego serializatora zwraca.
Zazwyczaj obiekty na stosie zawierają informacje o kontekście bieżącego obiektu, który jest serializowany. Nadrzędny serializator dodaje informacje kontekstowe do stosu o następnym obiekcie, który ma być serializowany, wywołuje odpowiedni serializator i po zakończeniu wykonywania serializatora na obiekcie usuwa informacje kontekstowe ze stosu. Do implementacji każdego serializatora należy określić, jakie obiekty są wypychane na tym stosie.
Na przykład obiekt o nazwie Enabled
ma typ Booleandanych . Jeśli serializator zapisuje tę wartość w strumieniu danych, może być konieczne dołączenie kontekstu lub typu właściwości, która zapisuje. Serializator nie ma jednak tych informacji, ponieważ jest on poinstruowany tylko o zapisie Boolean wartości. Aby podać te informacje serializatorowi, nadrzędny serializator może wypchnąć PropertyDescriptor element wskazujący Enabled
właściwość na stosie kontekstu.
Konstruktory
ContextStack() |
Inicjuje nowe wystąpienie klasy ContextStack. |
Właściwości
Current |
Pobiera bieżący obiekt na stosie. |
Item[Int32] |
Pobiera obiekt na stosie na określonym poziomie. |
Item[Type] |
Pobiera pierwszy obiekt na stosie, który dziedziczy z lub implementuje określony typ. |
Metody
Append(Object) |
Dołącza obiekt na końcu stosu, a nie wypycha go na górę stosu. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Pop() |
Usuwa bieżący obiekt ze stosu, zwracając jego wartość. |
Push(Object) |
Wypycha lub umieszcza określony obiekt na stosie. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |