ContextStack Sınıf

Tanım

bilgileri iç içe seri hale getiriciler için kullanılabilir hale getirmek için bir seri hale getirici tarafından kullanılabilecek bir yığın nesnesi sağlar.

public ref class ContextStack sealed
public sealed class ContextStack
type ContextStack = class
Public NotInheritable Class ContextStack
Devralma
ContextStack

Örnekler

Aşağıdaki kod örneği, 10 değeri göndermek ve kaldırmak için kullanma ContextStack işlemini gösterir.

#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

Açıklamalar

Bazı serileştiriciler, durumlarını doğru bir şekilde kalıcı hale getirmek için bir nesnenin bağlamı hakkında bilgi gerektirir. sınıfı, ContextStack seri hale getiricinin başka bir seri hale getiricinin erişebileceği bir yığına seri hale getirilen bir nesnenin bağlamı hakkında veri ayarlamasını sağlar. özelliğinin Context değeri, kullanım bilgilerini bazı seri hale getiricilerle paylaşmak için tarafından IDesignerSerializationManager sağlanır.

Bağlam yığını yararlıdır çünkü tasarım belgesini seri hale getirme işlemi derin iç içe yerleştirilmiş olabilir ve iç içe yerleştirmenin her düzeyindeki nesneler, nesnenin durumunu doğru bir şekilde kalıcı hale getirmek için bağlam bilgileri gerektirebilir. Seri hale getirici, iç içe seri hale getirici çağırmadan önce bir bağlam nesnesini yığına ayarlayabilir. Yığına ayarlanan her nesne, iç içe seri hale getiriciye yapılan bir çağrı döndürdüğünde bunu ayarlayan seri hale getirici tarafından kaldırılmalıdır.

Genellikle yığındaki nesneler, seri hale getirilen geçerli nesnenin bağlamı hakkında bilgi içerir. Üst seri hale getirici, serileştirilecek sonraki nesne hakkında yığına bağlam bilgileri ekler, uygun bir seri hale getirici çağırır ve seri hale getirici nesne üzerinde yürütmeyi bitirdiğinde, bağlam bilgilerini yığından kaldırır. Bu yığına hangi nesnelerin gönderileceğini belirlemek her seri hale getiricinin uygulanmasına bağlıdır.

Örneğin, adlı Enabled özelliğe sahip bir nesnenin veri türü vardır Boolean. Seri hale getirici bu değeri bir veri akışına yazarsa, yazdığı özelliğin bağlamını veya türünü içermesi gerekebilir. Ancak seri hale getirici bu bilgiye sahip değildir, çünkü yalnızca değeri yazması Boolean istenir. Bu bilgileri seri hale getiriciye sağlamak için, üst seri hale getirici bağlam yığınındaki Enabled özelliğine işaret eden bir PropertyDescriptor itebilir.

Oluşturucular

ContextStack()

ContextStack sınıfının yeni bir örneğini başlatır.

Özellikler

Current

Yığındaki geçerli nesneyi alır.

Item[Int32]

Yığındaki nesneyi belirtilen düzeyde alır.

Item[Type]

Belirtilen türden devralan veya uygulayan yığındaki ilk nesneyi alır.

Yöntemler

Append(Object)

Bir nesneyi yığının en üstüne göndermek yerine yığının sonuna ekler.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Pop()

Geçerli nesneyi yığından kaldırarak değerini döndürür.

Push(Object)

Belirtilen nesneyi yığına iletir veya yerleştirir.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.