嵌套/子对象的自定义XmlSerialization
我有一个场景,我有一个类资源,其中有两个嵌套在其中的类; Action和ResourceURL。 我需要为Resource和Action编写自定义xmlserializer,而不是为ResourceURL编写。 我为它们实现了IXmlSerializable。
问题是,当Resource被序列化时,我调用Action.WriteXML(XmlWriter)来获取Action的序列化forms,但是我无法获得ResourceURL的序列化forms。 标签变得混乱,它还添加了一个标签。
那么,我如何序列化一个对某些嵌套对象进行客户seril化的对象,而不是其他对象呢?
这是一个WriteXml方法示例:
void IXmlSerializable.WriteXml(XmlWriter writer) { // Simple string value: writer.WriteAttributeString("Name", this.Name); // Object without IXmlSerializable implementation: writer.WriteStartElement("NonCustomObject"); new XmlSerializer(NonCustomObjectType).Serialize(writer, this.NonCustomObject); writer.WriteEndElement(); // Object with IXmlSerializable implementation: writer.WriteStartElement("CustomObject"); (this.CustomObject as IXmlSerializable).WriteXml(writer); writer.WriteEndElement(); }
这是一个相应的ReadXml方法:
上述就是C#学习教程:嵌套/子对象的自定义XmlSerialization分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
void IXmlSerializable.ReadXml(XmlReader reader) { // Simple string value this.Name = reader.GetAttribute("Name"); // Object without IXmlSerializable implementation here: reader.ReadStartElement(); if (reader.Name == "NonCustomObject") { reader.ReadStartElement(); this.NonCustomObject = new XmlSerializer(NonCustomObjectType).Deserialize(reader); reader.ReadEndElement(); } // Object with IXmlSerializable implementation here: reader.ReadStartElement(); if (reader.Name == "CustomObject") { (this.CustomObject as IXmlSerializable).ReadXml(reader); reader.ReadEndElement(); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1006014.html