2009-01-07 49 views
0

(vb.net/c#/etc)XML反序列化 - 自動轉換屬性值成類(.NET)

我有麻煩搞清楚如何做一點反序列化的魔力。目前標準的反序列化工作正常,包括枚舉,但現在我想將屬性轉換爲類。哦!我在想什麼

我的XML看起來有點像這樣:

.... 
<review user="..." version="2.2">...</review> 

這對我的財產/類:

[XmlAttribute("version")] 
public MyVersion Version { get; set; } 

class MyVersion { 
    // equality overloaded 
    // can ctype() from string to MyVersion 
    // constructor that takes a single string, etc 
} 

我怎麼幫串行一起,以便它可以自動反序列化我的字符串財產進入這個類?我是否需要以某種方式修改MyVersion類,或更改屬性的定義?

  • 我做希望有重寫像OnDeserialized任何方法等,這是不值得爲這個項目。

如果這不能使用默認的xml解串器完成,那麼這將足夠了解。有很多事情是不好的,所以我不會感到驚訝。

謝謝!

回答

1

這不以聲明方式支持。您必須在父類(序列化爲元素的類)上實現IXmlSerializable,然後手動執行字符串和MyValue類型之間的轉換。

0

你可以很容易地做到這一點 - 只是不作爲反序列化行動。

使用XSD爲反序列化創建類。 NOW這些都是部分類,所以你可以寫一個評論類的新部分(包含'版本'屬性),並添加一個獲取/設置版本的方法。

在get方法中,簡單地創建該類的新實例並在set方法中簡單地更新從提供的版本類中的現有版本。

+0

是的,我可以做這個新的屬性。只是試圖找到一個聲明式(簡單)的方式來解決它,因爲我不能讓該屬性(無人應該使用)私人或默認序列化將無法正常工作。 – 2009-01-07 19:58:12