Share via


ContextStack Kelas

Definisi

Menyediakan objek tumpukan yang dapat digunakan oleh serializer untuk membuat informasi tersedia untuk serializer berlapis.

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

Contoh

Contoh kode berikut menunjukkan menggunakan ContextStack untuk mendorong lalu menghapus 10 nilai.

#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

Keterangan

Beberapa serializer memerlukan informasi tentang konteks objek untuk mempertahankan statusnya dengan benar. Kelas ContextStack memungkinkan serializer untuk mengatur data tentang konteks objek yang sedang diserialisasikan ke tumpukan tempat serializer lain dapat mengaksesnya. Nilai Context properti disediakan oleh IDesignerSerializationManager untuk berbagi informasi penggunaan ke beberapa serializer.

Tumpukan konteks berguna karena proses serialisasi dokumen desain dapat ditumpuk secara mendalam, dan objek di setiap tingkat bersarang mungkin memerlukan informasi konteks untuk mempertahankan status objek dengan benar. Serializer dapat mengatur objek konteks ke tumpukan sebelum memanggil serializer berlapis. Setiap objek yang diatur ke tumpukan harus dihapus oleh serializer yang mengaturnya setelah panggilan ke serializer berlapis akan kembali.

Biasanya, objek pada tumpukan berisi informasi tentang konteks objek saat ini yang sedang diserialisasikan. Serializer induk menambahkan informasi konteks ke tumpukan tentang objek berikutnya yang akan diserialisasikan, memanggil serializer yang sesuai dan, ketika serializer selesai dieksekusi pada objek, menghapus informasi konteks dari tumpukan. Terserah implementasi setiap serializer untuk menentukan objek apa yang didorong pada tumpukan ini.

Sebagai contoh, objek dengan properti bernama Enabled memiliki jenis Booleandata . Jika serializer menulis nilai ini ke aliran data, mungkin perlu menyertakan konteks atau jenis properti yang ditulisnya. Serializer tidak memiliki informasi ini, namun, karena hanya diinstruksikan untuk menulis Boolean nilai. Untuk memberikan informasi ini kepada serializer, serializer induk dapat mendorong PropertyDescriptor yang menunjuk ke Enabled properti pada tumpukan konteks.

Konstruktor

ContextStack()

Menginisialisasi instans baru kelas ContextStack.

Properti

Current

Mendapatkan objek saat ini pada tumpukan.

Item[Int32]

Mendapatkan objek pada tumpukan pada tingkat yang ditentukan.

Item[Type]

Mendapatkan objek pertama pada tumpukan yang mewarisi dari atau mengimplementasikan jenis yang ditentukan.

Metode

Append(Object)

Menambahkan objek ke akhir tumpukan, daripada mendorongnya ke bagian atas tumpukan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
Pop()

Menghapus objek saat ini dari tumpukan, mengembalikan nilainya.

Push(Object)

Mendorong, atau menempatkan, objek yang ditentukan ke tumpukan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga