DataSnap“Plain Old Delphi Objects”和嵌套对象

时间:2011-03-29 17:21:31

标签: delphi serialization delphi-xe datasnap podo

Delphi XE中关于DataSnap的新article解释说DataSnap现在能够在服务器和客户端之间传输TObject后代,类似于POJO的Java企业版概念(“普通旧Java对象”)。 / p>

如果这样的PODO具有需要初始化的嵌套对象类型属性(例如TStrings属性),这个新功能是否有效?所有这些子对象是否会被序列化并以其当前值传输?系统资源属性,如TFileStream,THandle或TThread,在序列化对象中没有意义,可以将它们标记为“不可序列化”吗?


有些信息在DocWiki中,包括:

  

这些是那里的领域   已经内置了   转换/返回:整数,字符串,   char,枚举,浮点数,对象,   记录。对于以下类型,   字段值被忽略和用户   转换是预期的:set,method,   变体,接口,指针,dynArray,   classRef,array。

1 个答案:

答案 0 :(得分:4)

我没有试过自己,但是阅读documentation它似乎会序列化任何事情,尽管你可能需要编写自定义转换器。下面的代码包含子对象,作为需要自定义转换器的对象的示例。

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;