【发布时间】:2012-05-22 09:57:17
【问题描述】:
我在尝试使用 IXmlSerializable 时遇到了一些问题。反序列化时,ReadXml 方法似乎没有被调用,而 WriteXml 却被调用。
这是代码的精简版。
public interface ICharacter {
string FullName { get; set; }
}
public class Character : ICharacter, IXmlSerializable {
public string FullName { get; set; }
public Character() {
//apply default character information
FullName = string.Empty;
}
}
public void ReadXml(XmlReader reader) {
if (reader == null) return;
//just using null to see if it's called, i've used a break point to check if it was fired
}
public void WriteXml(XmlWriter writer) {
writer.WriteElementString("FullName", FullName);
}
}
要序列化和反序列化,我执行以下操作:
//serialise example
Character character = new Character();
using (StringWriter stringWriter = new StringWriter()) {
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Character));
xmlSerializer.Serialize(stringWriter, character);
xml = stringWriter.ToString();
}
//deserialise example
using (StringReader stringReader = new StringReader(xml)) {
XmlSerializer xmlSerializer = new XmlSerializer(typeof(UserCharacter));
_character = (Character)xmlSerializer.Deserialize(stringReader);
}
我只是在这个类的设置上做错了吗?
【问题讨论】:
-
您要发送到
XmlSerializer的 XML 是什么? -
@saluce 感谢您的回复。问题是因为我试图使用不同的类来自定义序列化和反序列化。幸运的是,我设法纠正了这一点。我在下面添加了回复。再次感谢。
标签: c# .net xml serialization deserialization