2010-04-01 42 views
1

我試圖調查DeHL德爾福2010年自定義屬性,我得到的問題。Delphi 2010 DeHL序列化XML和自定義屬性:它是如何工作的?

TAppParamTest = class 
    public 
    User: string; 
    Password: string; 
    end; 

    TAppParam = class 
    private 
    FTest: TAppParamTest; 
    public 

    constructor Create; 
    destructor Destroy; override; 

    property Test: TAppParamTest read FTest write FTest; 
    end; 

這個效果很好:當我序列我有這個

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1"> 
    <FTest DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2"> 
    <User>User</User> 
    <Password>Psw</Password> 
    </FTest> 
</TAppParam 

,但我想這一點:

<TAppParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DeHL="http://alex.ciobanu.org/DeHL.Serialization.XML" DeHL:class="AppParam_unt.TAppParam" DeHL:refid="1"> 
    <Test DeHL:class="AppParam_unt.TAppParamTest" DeHL:refid="2"> 
    <User>User</User> 
    <Password>Psw</Password> 
    </Test> 
</TAppParam 

,所以我希望把定製我的類屬性:

TAppParam = class 
     private 
     [XmlElement('Test')] 
     FTest: TAppParamTest; 
     public 

     constructor Create; 
     destructor Destroy; override; 

     property Test: TAppParamTest read FTest write FTest; 
     end; 

但它不會編譯:(

我在哪裏犯錯?

+0

我只是試過,它編譯得很好。你得到什麼樣的編譯器錯誤,以及你的Delphi版本是什麼? – 2010-04-01 12:58:21

+0

我使用德爾福2010年,我有這個在法國「E2034 Trop deparamètresoriginaux」太多的英語參數。我使用DeHL 0.8。謝謝你的回答。 – 2010-04-01 14:40:05

+0

新DeHL鏈接; https://github.com/pavkam/DeHL – 2014-06-20 14:16:44

回答

4

用途: [XmlName('Test')] [XmlElement]

我改變了這些屬性,因爲它在降低串行代碼的複雜性。

+0

非常感謝。它現在工作:) – 2010-04-02 11:41:53