Data.DBXJSONReflect.TConverter

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 のインスタンスを作成し値を設定することができます。この程度の複雑さが、ユーザー定義の変換コンポーネント/逆変換コンポーネントで想定されます。
あらかじめ決められた状況で、イベントが発生します。マーシャリング時に発生し得る状況の一覧を以下の表に示します。
状況 | イベント |
---|---|
新しいオブジェクトが見つかる。 |
|
既にアクセスしたオブジェクトが見つかる。 |
|
新しいオブジェクトの内容が再度アクセスされる。 |
|
新しいフィールドが見つかる。 |
|
新しいフィールドが再度アクセスされる。 |
|
文字列値が見つかる。 |
|
数値が見つかる。 |
|
nil 値が見つかる。 |
|
論理値が見つかる。 |
|
リスト値が見つかる。 |
|
リストの処理が終了する。 |
これらのイベントは TConverter インスタンスで受信されます。ユーザー オブジェクトの構造によっては、これらは重なり合っています。TConverter インスタンスでは、イベントとそれらの引数に基づいて、ユーザー オブジェクトと同等のイメージを作成します。
変換コンポーネントで作成されるオブジェクト イメージは、アンマーシャリング コンポーネントで駆動される逆変換コンポーネント イベントを使って、元のユーザー オブジェクトの復元に使用することができます。
メモ: 整数型、文字列型、文字型、列挙型、浮動小数点型、オブジェクト型の各フィールドについては、組み込みの変換/逆変換が既に存在します。セット、メソッド、バリアント、インターフェイス、ポインタ、動的配列、クラス参照、配列の各型については、フィールド値は無視され、ユーザー定義の変換が必要です。