注意: XMLIgnore不是答案! 好的,所以继续我在XML Serialization and Inherited Types的问题后,我开始将该代码集成到我正在处理的应用程序中,愚蠢地认为一切都会顺利进行.. 我遇到了几个我实现
好的,所以继续我在XML Serialization and Inherited Types的问题后,我开始将该代码集成到我正在处理的应用程序中,愚蠢地认为一切都会顺利进行..
我遇到了几个我实现IEnumerable和ICollection< T>的类的问题.
这些的问题是,当XMLSerializer来序列化这些时,它将它们视为外部属性,而不是使用我们希望它的属性(即我们的AbstractXmlSerializer的属性)它来到这里并且摔倒(由于类型不匹配),几乎把我们放回原点.您也无法使用XmlIgnore属性修饰这些方法,因此我们无法以这种方式停止它.
我目前的解决方案是删除接口实现(在当前的应用程序中,它没有什么大不了的,只是使代码更漂亮).
我是否需要吞下自己的骄傲并接受它无法完成?我知道我有点推动并从XmlSerializer中获得了比预期更多的东西:)
编辑
我还要补充一点,我目前正在使用框架2.
更新
我已经接受了lomaxx’s answer.在我的情景中我实际上不能这样做,但我知道它会起作用.由于他们没有其他建议,我最终从代码中删除了接口实现.
你可以通过获取System.RunTime.Serialization dll(它是.net 3.x程序集)并从.net 2.0应用程序引用它来解决这个问题.这是因为.net 3.0二进制文件被编译为在.net 2.0 CLR上运行.通过这样做,您可以访问DataContractSerliazer,我已经习惯了解类似的问题,我想将ICollection作为参数传递给Web服务,而xmlserializer不知道如何正确处理它.
如果你在2.x应用程序中使用.net 3.x dll很酷,你应该可以使用DataContractSerializer来解决这个问题