2009-01-07 43 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