只要通用字段Object的实际类型包含在XmlElement属性列表中,就可以按照预期将以下类的对象序列化为
XML:
@H_404_6@
@H_404_6@
public class Serializedobject<T> : Serializable where T : Serializable { [System.Xml.Serialization.XmlElement(Type = typeof(Weapon))] [System.Xml.Serialization.XmlElement(Type = typeof(Armor))] [System.Xml.Serialization.XmlElement(Type = typeof(QuestItem))] public T Object; public string ObjectId; public int ID; public Serializedobject() { } public Serializedobject(T _object) { Object = _object; ID = Object.Id; ObjectId = Object.ObjectId; } }
问题是:@H_404_6@
解决方法
我也碰到了这个.我做的是创建一个包装类:
@H_404_6@
@H_404_6@
public static XmlDocument SerializetoXmlDocument<XmlEntity>(XmlEntity o) { XmlDocument xdoc; SerializeWrapper<XmlEntity> wrapper = new SerializeWrapper<XmlEntity>(); wrapper.XmlObject = o; XmlSerializer xs = new XmlSerializer(wrapper.GetType()); using (MemoryStream ms = new MemoryStream()) { xs.Serialize(ms,wrapper); xdoc = new XmlDocument(); ms.Position = 0; xdoc.Load(ms); } return xdoc; }
这是用于包装对象的类@H_404_6@
@H_404_6@
[XmlRoot("Root")] public class SerializeWrapper<TObject> { [XmlAttribute()] public string Name { get; set; } public TObject XmlObject { get; set; } }
现在,您可以将其称为:@H_404_6@
@H_404_6@
Weapon weapon = new Weapon() var xdoc = SerializetoXmlDocument<Weapon>(weapon);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。