2013-02-25 5 views
3

Так, например, как сериализация объекта, как это:Can OmniXML Deserialise объект, содержащий список объектов?

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. Он сериализует их свойства, но для свойств, имеющих типы объектов, сериализуются только потомки TPsistent. TList сходит с TEnumerable, который спускается из TObject, поэтому он не подходит. OmniXML имеет специальную обработку, встроенную для TCollection.

Вы можете сериализовать другие классы вручную.