XamlObjectWriter クラス

定義

作成元の XAML ノード ストリームからオブジェクト グラフを作成します。

public ref class XamlObjectWriter : System::Xaml::XamlWriter, System::Xaml::IXamlLineInfoConsumer
public class XamlObjectWriter : System.Xaml.XamlWriter, System.Xaml.IXamlLineInfoConsumer
type XamlObjectWriter = class
    inherit XamlWriter
    interface IXamlLineInfoConsumer
Public Class XamlObjectWriter
Inherits XamlWriter
Implements IXamlLineInfoConsumer
継承
XamlObjectWriter
実装

注釈

の メソッドはWrite、 メソッドによって定義された をXamlWriter使用するようにXamlObjectWriterパターンをWriteNode実装XamlObjectWriterします。 WriteNode ロジックは、リーダー内の Write 現在の位置にあるノードの種類に応じて、メソッドを切り替えます。

スコープ

XamlObjectWriterにはスコープの概念があります。つまり、 XamlObjectWriter は出力オブジェクト グラフの参照の概念ポイントを維持します。 特定のスコープでは、特定の操作が有効または無効であるか、操作なしの結果が生成される可能性があります。 たとえば、 を呼び出 WriteStartMember して、インスタンスとして既に存在するオブジェクトの初期化のディレクティブを書き込む場合、既定の実装では例外がスローされます。

カスタム XamlObjectWriter でスコープを追跡する方法として考えられるのは、ノード アクションをスタックまたはフレーム クラスに合わせることです。 スタックまたはフレームは、オブジェクト グラフの書き込み中 XamlObjectWriter に入力または終了されたオブジェクト モデルの深さのレベルごとに、プッシュとポップを追跡できます。

コールバック

中間シナリオと高度な XamlObjectWriter シナリオをサポートするために、オブジェクト グラフを記述するメカニズムには、コミット時または特定のアクションのコミットが間違っている場合 XamlObjectWriter に発生するコールバック エントリ ポイントが用意されています。 一部のコールバックは設定で有効になっており、書き込まれるオブジェクトの種類やメンバーに固有ではありません。ただし、多くの場合、コールバック情報はコンテキストで使用できます。または、コールバックを介して送信されるイベント データ内にあります。 関連するコールバックの一覧を次に示します。

  • によって AfterBeginInitHandler 宣言されたコールバックは、スコープが新しいオブジェクトに移動し、作成された各オブジェクトのオブジェクト有効期間のフェーズで BeginInit 呼び出されます。

  • によって AfterEndInitHandler 宣言されたコールバックは、スコープが新しいオブジェクトに移動し、作成された各オブジェクトのオブジェクト有効期間のフェーズで EndInit 呼び出されます。

  • によって BeforePropertiesHandler 宣言されたコールバックは、スコープがオブジェクトで開始されたときに呼び出され、そのオブジェクト スコープの最初 WriteStartMember の呼び出しが行われたが、まだコミットされていないときに発生します。

  • によって AfterPropertiesHandler 宣言されたコールバックは、スコープがオブジェクトで開始されたときに呼び出され、そのオブジェクト スコープの呼び出しが行われたが、まだコミットされていないときに WriteEndObject 発生します。

  • によって XamlSetValueHandler 宣言されたコールバックは、 が呼び出されたときに OnSetValue 呼び出されます。

辞書キーの書き込み

の既定の XamlObjectWriter 実装では、ディクショナリの内容がオブジェクト グラフに追加される前に、 の Dictionary<TKey,TValue> 制約に対する型変換がサポートされています。 この方法では、オブジェクトによって実行時にジェネリック ディクショナリをキー設定し、関連するジェネリック Add およびインデクサーの動作と一致させることができます。 ただし、基本 XamlObjectWriterに対して実装されているように、この機能は基底 Dictionary<TKey,TValue> クラスからのオブジェクト グラフの作成にのみ存在し、 の Dictionary<TKey,TValue>派生クラスには存在しません。

破棄済みのチェック

XAML ライターは、遅延操作に使用される場合や、中間で破棄された XAML ライター インスタンスに対して呼び出しが行われる場合に使用される可能性があります。 これらの場合、 XamlObjectWriter さまざまな API が スロー ObjectDisposedException される可能性があります。

コンストラクター

XamlObjectWriter(XamlSchemaContext)

によって使用される XAML スキーマ コンテキストを XamlObjectWriter 使用して、 クラスの新しいインスタンスを XamlReader初期化します。

XamlObjectWriter(XamlSchemaContext, XamlObjectWriterSettings)

XamlObjectWriter が使用するコンテキストとその設定を使用して、XamlReader クラスの新しいインスタンスを初期化します。

プロパティ

IsDisposed

Dispose(Boolean) が呼び出されているかどうかを取得します。

(継承元 XamlWriter)
Result

最後に書き込まれたオブジェクトを取得します。 通常、ノード ストリームがその末尾に達したとき、およびオブジェクト グラフが完成したときにだけ呼び出されます。

RootNameScope

XAML オブジェクト ライターの絶対ノード ルートの XAML 名前スコープを管理する INameScope サービスを取得します。

SchemaContext

アクティブな XAML スキーマ コンテキストを取得します。

ShouldProvideLineInfo

行情報サービスによって値が提供され、関連する場合に SetLineInfo(Int32, Int32) メソッドの呼び出しも行われるかどうかを報告する値を取得します。

メソッド

Clear()

すべての使用可能なフレームをリセットし、オブジェクト グラフをクリアします。

Close()

XAML ライター オブジェクトを閉じます。

(継承元 XamlWriter)
Dispose(Boolean)

XamlObjectWriter によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnAfterBeginInit(Object)

この AfterBeginInitHandlerXamlObjectWriterSettings に関連付けられている任意の XamlObjectWriter メソッドを呼び出します。

OnAfterEndInit(Object)

この AfterEndInitHandlerXamlObjectWriterSettings に関連付けられている任意の XamlObjectWriter メソッドを呼び出します。

OnAfterProperties(Object)

この AfterPropertiesHandlerXamlObjectWriterSettings に関連付けられている任意の XamlObjectWriter 参照メソッドを呼び出します。

OnBeforeProperties(Object)

この BeforePropertiesHandlerXamlObjectWriterSettings に関連付けられている任意の XamlObjectWriter 参照メソッドを呼び出します。

OnSetValue(Object, XamlMember, Object)

XamlSetValueHandler イベント データの handledtrue でない場合に、このライターの XamlObjectWriterSettings に関連付けられている任意の XamlSetValueEventArgs 参照メソッドを呼び出します。

SetLineInfo(Int32, Int32)

SetLineInfo(Int32, Int32) を実装し、例外の行情報を提供します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
WriteEndMember()

現在のメンバー スコープを閉じます。閉じるときにメンバー スコープの値を書き込む場合があります。 新しいスコープは、メンバーの親オブジェクトのスコープになります。

WriteEndObject()

ライターの現在のオブジェクト スコープを閉じます。 新しいオブジェクト スコープは、親メンバーのスコープになります。

WriteGetObject()

指定したオブジェクトが親プロパティの既定または暗黙の値である場合に、概念上の StartObject をオブジェクト グラフに書き込みます。 暗黙の値は、入力 XAML ノード セットでオブジェクト値として指定されているのではなく、XAML スキーマ コンテキストから取得した情報およびバッキング型情報から取得します。

WriteNamespace(NamespaceDeclaration)

次のオブジェクト スコープまたはメンバー スコープに適用される名前空間の宣言を定義します。

WriteNode(XamlReader)

XAML リーダーのノード型 (NodeType) に基づいて切り替えを実行し、ライター実装の関連する Write メソッドを呼び出します。

(継承元 XamlWriter)
WriteStartMember(XamlMember)

現在のオブジェクト スコープに新しいメンバー ノードを書き込みます。スコープは新しいメンバーのスコープになります。

WriteStartObject(XamlType)

現在のスコープにオブジェクト ノードを書き込みます。スコープを新しいオブジェクトのスコープに設定します。

WriteValue(Object)

現在のメンバー スコープに値を書き込みます。 現在のスコープがコレクション、ディクショナリ、または配列オブジェクトの内部にある場合、値はコレクション、ディクショナリ、または配列内に追加されます。

明示的なインターフェイスの実装

IDisposable.Dispose()

以下を参照してください。Dispose()

(継承元 XamlWriter)

適用対象

こちらもご覧ください