Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ContextStack

 

Publicado: octubre de 2016

Proporciona un objeto de pila que puede utilizarse un serializador para proporcionar información a los serializadores anidados.

Espacio de nombres:   System.ComponentModel.Design.Serialization
Ensamblado:  System (en System.dll)

System.Object
  System.ComponentModel.Design.Serialization.ContextStack

[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public sealed class ContextStack

NombreDescripción
System_CAPS_pubmethodContextStack()

Inicializa una nueva instancia de la clase ContextStack.

NombreDescripción
System_CAPS_pubpropertyCurrent

Obtiene el objeto actual en la pila.

System_CAPS_pubpropertyItem[Int32]

Obtiene el objeto en la pila en el nivel especificado.

System_CAPS_pubpropertyItem[Type]

Obtiene el primer objeto de la pila que herede de o implementa el tipo especificado.

NombreDescripción
System_CAPS_pubmethodAppend(Object)

Anexa un objeto al final de la pila, en lugar de insertar en la parte superior de la pila.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodPop()

Quita el objeto actual de la pila y devuelve su valor.

System_CAPS_pubmethodPush(Object)

Inserta o coloca el objeto especificado en la pila.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

Algunos serializadores requieren información acerca del contexto de un objeto para conservar correctamente su estado. La ContextStack clase permite a un serializador establecer los datos acerca del contexto de un objeto que se está serializando en una pila donde otro serializador puede tener acceso. El valor de la Context propiedad proporcionado por un IDesignerSerializationManager para compartir información de utilidad para algunos serializadores.

Una pila de contexto es útil porque el proceso de serialización de un documento de diseño puede estar muy anidado y objetos de cada nivel de anidación pueden requerir información de contexto para conservar correctamente el estado del objeto. Un serializador puede establecer un objeto de contexto a la pila antes de invocar a un serializador anidado. Cada objeto de la pila debe quitarse el serializador que lo estableció cuando se devuelve 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. Los serializadores principales agregan información de contexto a la pila relacionada con el siguiente objeto que se va a serializar, llama a un serializador adecuado y, cuando el serializador termina de ejecutarse en el objeto, quitan la información de contexto de la pila. Depende de la implementación de cada serializador para determinar qué objetos se insertarán 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 una secuencia de datos, puede que se necesiten incluir el contexto o el tipo de propiedad que está escribiendo. El serializador no tiene esta información, sin embargo, dado que sólo tiene instrucciones para escribir el Boolean valor. Para proporcionar esta información al serializador, el serializador principal puede insertar un PropertyDescriptor que apunta a la Enabled propiedad en la pila de contexto.

En el ejemplo de código siguiente se muestra cómo utilizar un ContextStack para insertar y extraer después 10 valores.

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() );
        }
    }
}

NamedPermissionSet

for full access to system resources. Demand values: F:System.Security.Permissions.SecurityAction.LinkDemand, F:System.Security.Permissions.SecurityAction.InheritanceDemand. Associated state:

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: