2011-03-29 67 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;