XML序列化和继承的类型

在上一个问题之后,我一直在努力使对象模型序列化为XML。但是我现在遇到了一个问题(奇怪的是!)。


我的问题是我有一个抽象基本类类型的集合,该集合由具体的派生类型填充。


我认为只将XML属性添加到所有涉及的类中就可以了,而且一切都会变得很顺利。可悲的是,事实并非如此!


因此,我在Google上进行了一些挖掘,现在我了解了为什么它不起作用。在该XmlSerializer其实是在为了序列化对象做一些聪明的反射/通过XML,并且因为它的基础上,抽象类型,它不能弄清楚到底是怎么回事了它的交谈。精细。


我确实在CodeProject上遇到过此页面,它看起来可能很有帮助(但仍可以完全阅读/使用),但我想我也想将此问题带到StackOverflow表中,以查看是否有任何整洁的地方骇客/技巧,以便以最快/最轻便的方式启动并运行。


有一件事我还要补充的是,我不要想往下走XmlInclude的路线。耦合太简单了,系统的这个区域正在大量开发中,因此这将是真正的维护难题!


潇潇雨雨
浏览 532回答 3
3回答

牧羊人nacy

要看的一件事是,在XmlSerialiser构造函数中,您可以传递序列化程序可能难以解析的类型数组。我不得不多次使用,其中需要序列化一个集合或一组复杂的数据结构,并且这些类型存在于不同的程序集中,等等。具有extraTypes参数的XmlSerialiser构造函数编辑:我要补充一点,这种方法比XmlInclude属性具有优势,您可以找到一种在运行时发现和编译可能的具体类型列表并将其填充的方法。

翻过高山走不出你

认真地说,POCO的可扩展框架永远不会可靠地序列化为XML。我之所以这样说,是因为我可以保证有人会参加,扩大您的课程,然后提高水平。您应该研究使用XAML序列化对象图。它旨在实现此目的,而XML序列化并非如此。Xaml序列化器和反序列化器可以毫无问题地处理泛型,以及基类和接口的集合(只要集合本身实现IList或IDictionary)。有一些警告,例如使用标记您的只读集合属性DesignerSerializationAttribute,但是重新编写代码以处理这些极端情况并不难。
打开App,查看更多内容
随时随地看视频慕课网APP