Ich habe folgendes:Permanenetly Art von Objekt in VB.NET ändern
Public Class OldClass
Inherits NewClass
....
End Class
NewClass
Erbt von BaseClass
Jetzt habe ich eine list(Of BaseClass)
ich einige dieser Objekte am Deserialisieren von XML. Das XML könnte sowohl OldCLass
es als auch NewCLass
es enthalten.
Nach der Deserialisierung befinden sich die Objekte in der Liste.
OldClass
ist genau die gleiche wie NewClass
(der einzige Code in OldClass
ist Inherits NewClass
). Ich musste die alte Klasse erstellen, weil der Elementname im XML geändert wurde und ich Abwärtskompatibilität beibehalten muss.
Wie kann ich den Typ permanent von irgendwelchen in der list
OldClass
Objekte ändern, so dass, wenn sie erneut serialisiert werden, werden sie <NewClass ...>
statt <OldClass ...>
?
Ich habe versucht CType
, OldClass.ChangeType
, list(list.indexOf(OldTypeObj)).ChangeType(...)
... Nichts funktioniert. Beim Debuggen zeigt die Überprüfung der Liste, dass die OldClass
es immer noch sind.
EDIT
ich dies mit Hilfe der vorhandenen Daten serialisieren:
<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)
siehe meine Bearbeitung oben –