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; }}
问题是:
如何序列化此类的对象,包括通用字段Object,而不指定XmlElement属性中T的所有可能类型?
解决方法 我也碰到了这个.我做的是创建一个包装类: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;}
这是用于包装对象的类
[XmlRoot("Root")]public class SerializeWrapper<TObject>{ [XmlAttribute()] public string name { get; set; } public TObject XmlObject { get; set; }}
现在,您可以将其称为:
Weapon weapon = new Weapon()var xdoc = SerializetoXmldocument<Weapon>(weapon);总结
以上是内存溢出为你收集整理的c# – 如何将泛型类序列化为XML?全部内容,希望文章能够帮你解决c# – 如何将泛型类序列化为XML?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)