【发布时间】:2017-02-27 21:50:47
【问题描述】:
我有以下几点:
Public Class OldClass
Inherits NewClass
....
End Class
NewClass 继承自 BaseClass
现在我有一个list(Of BaseClass)
我正在从 XML 中反序列化其中的一些对象。 XML 可以同时包含OldCLasses 和NewCLasses。
反序列化后,对象在列表中。
OldClass完全与NewClass 相同(OldClass 中的唯一代码是Inherits NewClass)。我不得不创建旧类,因为 XML 中的元素名称发生了变化,我需要保持向后兼容性。
如何永久更改list 中任何OldClass 对象的类型,以便在重新序列化它们时变为<NewClass ...> 而不是<OldClass ...>?
我已经尝试过CType、OldClass.ChangeType、list(list.indexOf(OldTypeObj)).ChangeType(...)... 没有任何效果。调试时,检查列表显示OldClasses 仍然是这样。
编辑
我正在使用它来序列化现有数据:
<XmlArray("lines")> _
<XmlArrayItem("CalculatedLine", GetType(Lines.CalculatedLine))> _
<XmlArrayItem("PointLine", GetType(Lines.PointLine))> _
<XmlArrayItem("line", GetType(Lines.OldLine))> _ <<This needs to become PointLine when serialized.
Public Property lines As List(Of Lines.Line) = New List(Of Lines.Line)
【问题讨论】:
标签: xml vb.net casting type-conversion