2011-03-29 69 views
5

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

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


有些信息在DocWiki,包括这个:

这些是其中有 已经是一个内置 转化/回复的字段:整数,字符串, 字符,枚举,浮动,对象, 记录。对于以下类型,将忽略 字段值,并且期望用户 转换:set,method, variant,interface,pointer,dynArray, classRef,array。

+0

哪里是大卫,当你需要他... 2011-03-29 17:28:47

+1

@Lieven他集中精力上,他知道比绝对没有更多的话题! – 2011-03-29 20:36:53

+2

尽管它确实突出了StackOverflow系统的问题。当所有德尔福问题都被大卫和安德烈亚斯等人抢购时,就不要养成回答问题的习惯。我只是因为这个原因每隔几天就停一次,我只是不需要。我们得到的问题超出了David和Andreas的专业知识范围,但由于缺乏常规的Delphi问题回答者,因此很大程度上没有答案。 – LachlanG 2011-03-29 22:22:33

回答

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;