Data.DBXJSONReflect.TConverter

提供: RAD Studio API Documentation
移動先: 案内検索

System.TObjectTConverter

Delphi

TConverter<TSerial> = class abstract

C++

template<typename TSerial> class PASCALIMPLEMENTATION TConverter__1 : public System::TObject

プロパティ

種類 可視性 ソース ユニット
class public
Data.DBXJSONReflect.pas
Data.DBXJSONReflect.hpp
Data.DBXJSONReflect Data.DBXJSONReflect

説明

変換コンポーネントの基底クラスを表します。

どのようなシリアライザも TConverter クラスから継承する必要があります。TConverter には、マーシャリング クラスでユーザー オブジェクトのシリアル化に使用される API イベントが用意されています。

変換コンポーネントと逆変換コンポーネントを型とフィールドに対して、あるいは型に対して登録することができます。そのような型の宣言済みフィールドはすべて、ユーザーから提供された変換コンポーネント/逆変換コンポーネントで処理されます。フィールドに登録された変換コンポーネント/逆変換コンポーネントは、型の変換コンポーネント/逆変換コンポーネントより優先されます。

フィールド変換コンポーネントは、フィールド値を文字列、オブジェクト、文字列リスト、オブジェクト リストのいずれかに変換できます。これらの変換値は対応する逆変換コンポーネントに引数として渡され、そこでフィールド値が復元されることになります。

型変換コンポーネントは、値を文字列、オブジェクト、文字列リスト、オブジェクト リストのいずれかに変換できます。これらの変換値は型の逆変換コンポーネントに引数として渡され、そこで元の型インスタンスが復元されることになります。

たとえば、TStringList フィールドを変換コンポーネントで文字列配列に変換し、逆変換コンポーネントでその文字列リストを使用して TStringList のインスタンスを作成し値を設定することができます。この程度の複雑さが、ユーザー定義の変換コンポーネント/逆変換コンポーネントで想定されます。

あらかじめ決められた状況で、イベントが発生します。マーシャリング時に発生し得る状況の一覧を以下の表に示します。



状況 イベント

新しいオブジェクトが見つかる。

OnTypeStart

既にアクセスしたオブジェクトが見つかる。

OnRefType

新しいオブジェクトの内容が再度アクセスされる。

OnTypeEnd

新しいフィールドが見つかる。

OnFieldStart

新しいフィールドが再度アクセスされる。

OnFieldEnd

文字列値が見つかる。

OnString

数値が見つかる。

OnNumber

nil 値が見つかる。

OnNull

論理値が見つかる。

OnBoolean

リスト値が見つかる。

OnListStart

リストの処理が終了する。

OnListEnd



これらのイベントは TConverter インスタンスで受信されます。ユーザー オブジェクトの構造によっては、これらは重なり合っています。TConverter インスタンスでは、イベントとそれらの引数に基づいて、ユーザー オブジェクトと同等のイメージを作成します。

変換コンポーネントで作成されるオブジェクト イメージは、アンマーシャリング コンポーネントで駆動される逆変換コンポーネント イベントを使って、元のユーザー オブジェクトの復元に使用することができます。

メモ:  整数型、文字列型、文字型、列挙型、浮動小数点型、オブジェクト型の各フィールドについては、組み込みの変換/逆変換が既に存在します。セット、メソッド、バリアント、インターフェイス、ポインタ、動的配列、クラス参照、配列の各型については、フィールド値は無視され、ユーザー定義の変換が必要です。

関連項目