使用XmlSerializer序列化派生类ChildBase实际上是一个抽象类。当我尝试反序列化时,我得到一个invalidOperationException有没有一种方法可以将XMLSerializer与派生对象一起使用?谢谢。有三种方法可以做到这一点;您可以使用[XmlInclude]作为类型,或使用XmlElement/XmlArrayItem作为属性。它们都显示在下面;取消注释您喜欢的对:使用系统;使用System.Collections.Generic;使用System.Xml.Serialization;publicclassMyWrapper{//2:[XmlElement("A",Type=typeof(ChildA))]//2:[XmlElement("B",Type=typeof(ChildB))]//3:[XmlArrayItem("A",Type=typeof(ChildA))]//3:[XmlArrayItem("B",Type=typeof(ChildB))]publicListData{get;放;}}//1:[XmlInclude(typeof(ChildA))]//1:[XmlInclude(typeof(ChildB))]公共抽象类}}publicclassChildA:ChildClass{publicstringAProp{get;放;}}publicclassChildB:ChildClass{publicstringBProp{get;放;}}staticclassProgram{staticvoidMain(){varser=newXmlSerializer(typeof(MyWrapper));varobj=newMyWrapper{Data=newList{newChildA{ChildProp="abc",AProp="def"},newChildB{ChildProp="ghi",BProp="jkl"}}};ser.Serialize(Console.Out,obj);您可以使用XmlIncludeAttribute。或者换个角度看这篇文章。以上就是C#学习教程:使用XmlSerializer序列化派生类共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
