内のオブジェクトの種類を変更:今、私はからこれらのオブジェクトの数をデシリアライズしていますlist(Of BaseClass)
Permanenetly私は、次のしているVB.NET
を持ってBaseClass
から
Public Class OldClass
Inherits NewClass
....
End Class
NewClass
継承XML。 XMLにはOldCLass
esとNewCLass
esの両方を含めることができます。
デシリアライズ後、オブジェクトはリストにあります。
OldClass
は(OldClass
でのみコードがInherits NewClass
ある)NewClass
と全く同じあります。 XMLで要素名が変更され、下位互換性を維持する必要があるため、古いクラスを作成する必要がありました。
、彼らが再直列化されたとき、彼らは<NewClass ...>
代わりの<OldClass ...>
なるようにどのように私は永久にlist
のあらゆるOldClass
オブジェクトの種類を変更できますか?
私は試しましたCType
、OldClass.ChangeType
、list(list.indexOf(OldTypeObj)).ChangeType(...)
...何も動作しません。デバッグするときに、リストを調べると、OldClass
はそれだけであることがわかります。
EDIT
私は、既存のデータをシリアル化するためにこれを使用しています:
<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)
上記の私の編集を参照してください –