Data.DBXJSONReflect.TConverter
Delphi
TConverter<TSerial> = class abstract
C++
template<typename TSerial> class PASCALIMPLEMENTATION TConverter__1 : public System::TObject
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
class | public | Data.DBXJSONReflect.pas Data.DBXJSONReflect.hpp |
Data.DBXJSONReflect | Data.DBXJSONReflect |
Beschreibung
Repräsentiert die Basiskonverterklasse.
Alle Serialisierungsklassen müssen von der Klasse TConverter abstammen. TConverter stellt die von einer Marshaller-Klasse zur Serialisierung eines Benutzerobjekts verwendeten API-Ereignisse bereit.
Konverter und Reverter können für einen Typ und ein Feld oder für einen Typ registriert werden. Alle deklarierten Felder dieses Typs werden von dem bereitgestellten Benutzer-Konverter/Reverter verarbeitet. Ein bei einem Feld registrierter Konverter/Reverter hat Vorrang vor einem Typkonverter/Reverter.
Ein Feldkonverter kann einen Feldwert in einen String, ein Objekt, eine String-Liste oder eine Objektliste umwandeln. Diese umgewandelten Werte werden als Argumente an den entsprechenden Reverter übergeben, um den Feldwert neu zu bilden.
Ein Typkonverter kann einen Wert in einen String, ein Objekt, eine String-Liste oder eine Objektliste umwandeln. Diese werden als Argumente an den Typ-Reverter übergeben, um die ursprüngliche Typinstanz neu zu bilden.
Ein TStringList-Feld kann beispielsweise von einem Konverter in ein String-Array umgewandelt werden, und ein Reverter kann anhand der String-Liste eine Instanz von TStringList erstellen und füllen. Ein benutzerdefinierter Konverter/Reverter sollte über diesen Komplexitätsgrad verfügen.
In vorbestimmten Situationen werden Ereignisse ausgegeben. Die folgende Tabelle enthält die Liste der Situationen, die während des Marshalling auftreten können.
Situation | Ereignis |
---|---|
Ein neues Objekt wird gefunden. |
|
Ein bereits besuchtes Objekt wird gefunden. |
|
Ein neuer Objektinhalt wurde erneut besucht. |
|
Ein neues Feld wird gefunden. |
|
Ein neues Feld wird besucht. |
|
Ein Stringwert wird gefunden. |
|
Ein numerischer Wert wird gefunden. |
|
Ein Nil-Wert wird gefunden. |
|
Ein boolescher Wert wird gefunden. |
|
Ein Listenwert wird gefunden. |
|
Die Verarbeitung einer Liste ist beendet. |
Die Ereignisse werden von einer TConverter-Instanz empfangen. Abhängig von der Struktur des Benutzerobjekts sind diese teilweise verdeckt. Die TConverter-Instanz erstellt auf der Grundlage der Ereignisse und ihrer Argumente ein äquivalentes Abbild des Benutzerobjekts.
Anhand des vom Konverter erstellten Objektabbilds kann das ursprüngliche Benutzerobjekt unter Verwendung der von einem Unmarshaller gesteuerten Reverter-Ereignisse neu gebildet werden.
Anmerkung: Für die folgenden Felder ist bereits eine integrierte Konvertierung/Reversion vorhanden: Integer, String, Char, Aufzählung, Float, Objekt. Bei den folgenden Typen werden die Feldwerte ignoriert, und es wird eine Benutzerkonvertierung erwartet: Menge, Methode, Variante, Interface, Zeiger, dynArray, classRef, Array.