delphi - DataSnap "Plain Old Delphi Objects"和嵌套对象

标签 delphi serialization delphi-xe datasnap podo

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

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

<小时/>

一些信息位于 DocWiki ,包括这个:

These are the fields for which there is already a built-in conversion/reversion: integer, string, char, enumeration, float, object, record. For the following types, the field values are ignored and user conversion is expected: set, method, variant, interface, pointer, dynArray, classRef, array.

最佳答案

我自己没有尝试过,但阅读了 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;

关于delphi - DataSnap "Plain Old Delphi Objects"和嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476414/

相关文章:

C++成员函数指针指向全局函数指针

delphi - 检查 Advantage 数据库连接的运行状况

scala - Chill-kryo 中的异常

windows - ReadDirectoryChangesw 的递归使用

delphi - 如何使用可变参数打印字符串?

delphi - 我如何检查我的系统中是否安装了特定的修补程序(Windows 更新)?

javascript - 如何通过ajax将多个变量传递给codeigniter Controller ?一个变量是通过序列化

c# - 在使用 XmlSerializer 序列化期间排除对象

delphi - 如何在Label和ListView中显示&

delphi - 如何防止 ListView header 遮挡第一组的顶部?