Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt ein Stapelobjekt zur Verfügung, das von einem Serialisierungsprogramm verwendet werden kann, um geschachtelten Serialisierungsprogrammen Informationen zur Verfügung zu stellen.
Namespace: System.ComponentModel.Design.Serialization
Assembly: System (in system.dll)
Syntax
'Declaration
Public NotInheritable Class ContextStack
'Usage
Dim instance As ContextStack
public sealed class ContextStack
public ref class ContextStack sealed
public final class ContextStack
public final class ContextStack
Hinweise
Einige Serialisierungsprogramme erfordern Informationen über den Kontext eines Objekts, um ihren Zustand ordnungsgemäß beizubehalten. Mithilfe der ContextStack-Klasse können Serialisierungsprogramme Daten für den Kontext des serialisierten Objekts auf einen Stapel festlegen, sodass andere Serialisierungsprogramme darauf zugreifen können. Der Wert der Context-Eigenschaft wird durch eine IDesignerSerializationManager-Schnittstelle bereitgestellt, um die verwendeten Informationen für andere Serialisierungsprogramme freizugeben.
Ein Kontextstapel ist nützlich, weil der Vorgang der Serialisierung eines Designdokuments mehrfach verschachtelt sein kann und Objekte auf jeder Verschachtelungsebene Kontextinformationen benötigen können, um den Zustand des Objekts korrekt beibehalten zu können. Ein Serialisierungsprogramm kann ein Kontextobjekt auf den Stapel festlegen, bevor ein geschachteltes Serialisierungsprogramm aufgerufen wird. Alle Objekte, die für den Stapel festgelegt sind, sollten von dem Serialisierungsprogramm entfernt werden, das sie festgelegt hat, nachdem ein Aufruf eines geschachtelten Serialisierungsprogramms beendet wurde.
Üblicherweise enthalten die Objekte auf einem Stapel Informationen über den Kontext des aktuellen Objekts, das serialisiert wird. Ein übergeordnetes Serialisierungsprogramm fügt dem Stapel Kontextinformationen über das nächste hinzuzufügende Objekt hinzu, ruft ein geeignetes Serialisierungsprogramm auf und entfernt nach dem Beenden der Ausführung für das Objekt die Kontextinformationen vom Stapel. Die Implementierung jedes einzelnen Serialisierungsprogramms bestimmt, welche Objekte auf diesen Stapel gelegt werden.
Beispielsweise verfügt ein Objekt mit einer Enabled-Eigenschaft über einen Datentyp von Boolean. Wenn ein Serialisierungsprogramm diesen Wert in einen Datenstream schreibt, muss ggf. der Kontext oder Typ der zu schreibenden Eigenschaft mit eingeschlossen werden. Das Serialisierungsprogramm verfügt jedoch nicht über diese Informationen, da es nur angewiesen wurde, den Wert für die Boolean-Struktur zu schreiben. Um diese Informationen für ein Serialisierungsprogramm verfügbar zu machen, kann das übergeordnete Serialisierungsprogramm eine PropertyDescriptor-Klasse ablegen, die auf die Enabled-Eigenschaft auf dem Kontextstapel zeigt.
Hinweis
Das auf diese Klasse angewendete HostProtectionAttribute-Attribut besitzt den Resources-Eigenschaftenwert SharedState. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder eines URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.
Beispiel
Im folgenden Codebeispiel wird die Verwendung der ContextStack-Klasse veranschaulicht, mit der zehn Werte abgelegt und anschließend entfernt werden.
Imports System
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 Not item Is Nothing
Console.WriteLine(("Value popped from stack: " + item.ToString()))
item = stack.Pop()
End While
End Sub
End Module
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() );
}
}
}
#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 );
}
.NET Framework-Sicherheit
- NamedPermissionSet für Vollzugriff auf Systemressourcen. Anforderungswerte: LinkDemand, InheritanceDemand. Zugeordneter Zustand: FullTrust
Vererbungshierarchie
System.Object
System.ComponentModel.Design.Serialization.ContextStack
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ContextStack-Member
System.ComponentModel.Design.Serialization-Namespace
IDesignerSerializationManager