(vb.net/c#/etc)
我无法弄清楚如何做一些反序列化魔法。目前标准的反序列化工作正常,包括枚举,但现在我想将属性转换为类。哦!我在想什么!
我的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类,或更改属性的定义?
如果使用默认的xml反序列化器无法做到这一点,那么这就足以让人知道了。有很多东西是不好的,所以我不会感到惊讶。
谢谢!
答案 0 :(得分:1)
声明方式不支持此功能。您必须在父类(序列化为元素的类)上实现IXmlSerializable,并手动执行字符串和MyValue类型之间的转换。
答案 1 :(得分:0)
你可以很容易地做到这一点 - 只是不作为反序列化行动。
使用XSD创建用于反序列化的类。这些都是部分类,因此您可以编写审阅类的新部分(包含属性“version”)并添加获取/设置版本的方法。
在get方法中,简单地创建该类的新实例,并在set方法中简单地更新其提供的版本类中的现有版本。