Некоторое время назад я определил класс, сериализованный с помощью XML. Этот класс содержал сериализуемое свойство Alignment
целочисленного типа. Теперь я расширил и обновил этот класс, в результате чего было добавлено новое свойство Position
, тип которого является другим классом, который также имеет несколько сериализуемых свойств. Новое свойство Position
теперь должно взять на себя роль старого свойства Alignment
, то есть, поскольку типом свойства Position
является другой класс, один из его элементов будет содержать значение, которое ранее содержалось в свойстве Alignment
, что делает свойство Alignment
устаревшим.
Я пытаюсь выяснить, как мне убедиться, что при десериализации старой версии этого класса (без свойства Position
в нем) я удостоверюсь, что десериализатор возьмет значение свойства Alignment
из старого класса и установит это как значение одного из членов свойства Position
в новом классе?
Private WithEvents _Position As Position = New Position(Alignment.MiddleMiddle, 0, True, 0, True)
Public Property Position() As Position 'NEW composite property that holds the value of the obsolted property, i.e. Alignment
Get
Return _Position
End Get
Set(ByVal value As Position)
_Position = value
End Set
End Property
Private _Alignment As Alignment = Alignment.MiddleMiddle
<Xml.Serialization.XmlIgnore(), Obsolete("Use Position property instead.")> _
Public Property Alignment() As Alignment 'The old, obsoleted property that I guess must be left for compliance with deserializing the old version of this class
Get
Return _Alignment
End Get
Set(ByVal value As Alignment)
_Alignment = value
End Set
End Property
Извините, но код написан на VB, но он в равной степени применим и к C#, и к любому другому языку .NET.
Не могли бы вы мне помочь?