前段时间我定义了一个使用 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 语言。
你能帮我吗?