Delphi XE中关于DataSnap的新article解释说DataSnap现在能够在服务器和客户端之间传输TObject后代,类似于POJO的Java企业版概念(“普通旧Java对象”)。 / p>
如果这样的PODO具有需要初始化的嵌套对象类型属性(例如TStrings属性),这个新功能是否有效?所有这些子对象是否会被序列化并以其当前值传输?系统资源属性,如TFileStream,THandle或TThread,在序列化对象中没有意义,可以将它们标记为“不可序列化”吗?
有些信息在DocWiki中,包括:
这些是那里的领域 已经内置了 转换/返回:整数,字符串, char,枚举,浮点数,对象, 记录。对于以下类型, 字段值被忽略和用户 转换是预期的:set,method, 变体,接口,指针,dynArray, classRef,array。
答案 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;