5

Delphi XEのDataSnapに関する新しい記事では、POJOのJava Enterprise Editionの概念(「プレーンオールドJavaオブジェクト」)と同様に、DataSnapがサーバーとクライアント間でTObjectの子孫を転送できるようになったと説明しています。

このようなPODOに、初期化する必要のあるネストされたオブジェクトタイプのプロパティ(TStringsプロパティなど)がある場合、この新機能は機能しますか?これらのサブオブジェクトはすべてシリアル化され、現在の値で転送されますか?シリアル化されたオブジェクトでは意味をなさないTFileStream、THandle、TThreadなどのシステムリソースプロパティについてはどうでしょうか。これらは「シリアル化不可」としてタグ付けできますか?


DocWikiには、次のような情報があります。

これらは、すでに組み込みの変換/復帰が存在するフィールドです:整数、文字列、文字、列挙型、浮動小数点数、オブジェクト、レコード。次のタイプの場合、フィールド値は無視され、ユーザー変換が期待されます:set、method、variant、interface、pointer、dynArray、classRef、array。

4

1 に答える 1

4

私は自分で試したことはありませんが、ドキュメントを読むと、カスタムコンバーターを作成する必要があるかもしれませんが、ほぼすべてのものがシリアル化されるようです。サブオブジェクトを含む次のコードは、カスタムコンバーターを必要とするオブジェクトの例として示されています。

type
  TAddress = record
    FStreet: String;
    FCity: String;
    FCode: String;
    FCountry: String;
    FDescription: TStringList;
  end;

  TPerson = class
  private
    FName: string;
    FHeight: integer;
    FAddress: TAddress;
    FSex: char;
    FRetired: boolean;
    FChildren: array of TPerson;
    FNumbers: set of 1..10;
  public
    constructor Create;
    destructor Destroy; override;

    procedure AddChild(kid: TPerson);
  end;
于 2011-03-29T20:13:09.827 に答える