ContextStack Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona un objeto de pila que puede utilizar un serializador con el fin de ofrecer información a los serializadores anidados.
public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
- Herencia
-
ContextStack
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar para ContextStack insertar y, a continuación, quitar 10 valores.
#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
Comentarios
Algunos serializadores requieren información acerca del contexto de un objeto para conservar correctamente su estado. La ContextStack clase permite a un serializador establecer datos sobre el contexto de un objeto que se está serializando en una pila donde otro serializador puede acceder a él. El valor de la Context propiedad lo proporciona un IDesignerSerializationManager para compartir información de uso en algunos serializadores.
Una pila de contexto es útil porque el proceso de serialización de un documento de diseño se puede anidar profundamente, y los objetos en cada nivel de anidamiento pueden requerir información de contexto para conservar correctamente el estado del objeto. Un serializador puede establecer un objeto de contexto en la pila antes de invocar un serializador anidado. El serializador debe quitar cada objeto establecido en la pila que lo establezca después de una llamada a un serializador anidado.
Normalmente, los objetos de la pila contienen información sobre el contexto del objeto actual que se está serializando. Un serializador primario agrega información de contexto a la pila sobre el siguiente objeto que se va a serializar, llama a un serializador adecuado y, cuando el serializador termina de ejecutarse en el objeto, quita la información de contexto de la pila. Depende de la implementación de cada serializador determinar qué objetos se insertan en esta pila.
Por ejemplo, un objeto con una propiedad denominada Enabled
tiene un tipo de datos de Boolean. Si un serializador escribe este valor en un flujo de datos, es posible que tenga que incluir el contexto o el tipo de propiedad que está escribiendo. Sin embargo, el serializador no tiene esta información, ya que solo se le indica que escriba el Boolean valor. Para proporcionar esta información al serializador, el serializador primario puede insertar un PropertyDescriptor que apunte a la propiedad en la Enabled
pila de contexto.
Constructores
ContextStack() |
Inicializa una nueva instancia de la clase ContextStack. |
Propiedades
Current |
Obtiene el objeto actual de la pila. |
Item[Int32] |
Obtiene el objeto de la pila en el nivel especificado. |
Item[Type] |
Obtiene el primer objeto de la pila que se deriva del tipo especificado o lo implementa. |
Métodos
Append(Object) |
Anexa un objeto al final de la pila, en lugar de insertarlo en la parte superior de la pila. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
Pop() |
Quita el objeto actual de la pila y devuelve su valor. |
Push(Object) |
Inserta o coloca el objeto especificado en la pila. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |