ContextStack クラス
アセンブリ: System (system.dll 内)


一部のシリアライザでは、オブジェクトの状態を一貫して正しく維持するために、オブジェクトのコンテキスト情報が必要です。ContextStack クラスを使用すると、シリアル化するオブジェクトのコンテキスト データを、シリアライザによって、他のシリアライザからアクセスできるスタックに設定できます。Context プロパティの値は、シリアライザの使用について情報を共有するために IDesignerSerializationManager によって提供されます。
デザイン ドキュメントをシリアル化するプロセスは、多階層の入れ子で構成される場合があります。オブジェクトの状態を正しく永続化するには、各入れ子レベルのオブジェクトでコンテキスト情報が必要です。このような状況では、コンテキスト スタックを使用すると便利です。シリアライザは、入れ子のシリアライザを呼び出す前にコンテキスト オブジェクトをスタックに設定できます。オブジェクトを設定したシリアライザは、入れ子のシリアライザへの呼び出しに対する戻り値が返された後で、スタックに設定された各オブジェクトを削除する必要があります。
通常、スタック上のオブジェクトには、シリアル化されている現在のオブジェクトのコンテキストについての情報が格納されます。親シリアライザは、次にシリアル化されるオブジェクトについてのコンテキスト情報をスタックに追加し、適切なシリアライザを呼び出し、そのシリアライザがオブジェクトへの実行を完了した時点でスタックからコンテキスト情報を削除します。このスタックでどのオブジェクトがプッシュされるかは、各シリアライザの実装によって異なります。
たとえば、Enabled というプロパティを持つオブジェクトに Boolean データ型があるとします。シリアライザがこの値をデータ ストリームに書き込む場合、コンテキストまたはプロパティの型も含める必要が生じる場合もあります。しかし、シリアライザに対しては Boolean 値の書き込みだけが命令されているため、シリアライザは必要な情報を取得できません。シリアライザにこの情報を提供するために、親シリアライザは、コンテキスト スタック上で Enabled プロパティを指す PropertyDescriptor をプッシュできます。
![]() |
---|
このクラスに適用される HostProtectionAttribute 属性の Resources プロパティの値は、SharedState です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的には、アイコンをダブルクリック、コマンドを入力、またはブラウザに URL を入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラスのトピックまたは「SQL Server プログラミングとホスト保護属性」を参照してください。 |

ContextStack を使用して 10 個の値をプッシュし、その後削除するコード例を次に示します。
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 ); }


System.ComponentModel.Design.Serialization.ContextStack


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ContextStack コンストラクタ
アセンブリ: System (system.dll 内)



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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ContextStack プロパティ
ContextStack メソッド

名前 | 説明 | |
---|---|---|
![]() | Append | スタックの最上位にオブジェクトをプッシュせずに、スタックの末尾にオブジェクトを追加します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | Pop | スタックから現在のオブジェクトを削除し、そのオブジェクトの値を返します。 |
![]() | Push | 指定したオブジェクトをスタックにプッシュ (格納) します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

ContextStack メンバ
入れ子のシリアライザで情報を使用できるように、シリアライザによって使用するスタック オブジェクトを提供します。
ContextStack データ型で公開されるメンバを以下の表に示します。



名前 | 説明 | |
---|---|---|
![]() | Append | スタックの最上位にオブジェクトをプッシュせずに、スタックの末尾にオブジェクトを追加します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | Pop | スタックから現在のオブジェクトを削除し、そのオブジェクトの値を返します。 |
![]() | Push | 指定したオブジェクトをスタックにプッシュ (格納) します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

Weblioに収録されているすべての辞書からContextStackを検索する場合は、下記のリンクをクリックしてください。

- ContextStackのページへのリンク