2013-02-25 140 views
3

因此,例如,如何序列化对象是这样的:OmniXML可以反序列化一个包含对象列表的对象吗?

unit u_Configuration; 

interface 

uses 
    Classes, 
    Generics.Collections, 
    OmniXML, 
    OmniXMLPersistent 
    ; 

type 
    TMyObject = class (TPersistent) 
    strict private 
     fName : String; 
    public 
    published 
     property Name: String read fName write fName; 
    end; 

    TConfiguration = class(TPersistent) 
    strict private 
     fTheList : TList<TMyObject>; 
    private 
    public 
    published 
     property TheList: TList<TMyObject> read fTheList write fTheList; 

    end; 

implementation 

end. 

回答

2

OmniXML连载TPersistent后裔。它序列化它们的属性,但对于具有对象类型的属性,只有TPersistent的后代被序列化。 TList从TEnumerable下降,它从TObject下降,所以它不符合条件。 OmniXML为TCollection内置了特殊处理。

您可以手动序列化其他类。