我創建了以下自定義類來處理特定字符串(「YYY-MM-DD」)作爲動態當前值的表示形式。有幾個擴展,縮小和ToString函數可以幫助程序員進行內碼轉換。Xml使用縮小運算符對屬性進行反序列化
我的問題是當我使用XmlSerializer,一個使用MyDateTime的類,我反序列化。我儘管XmlSerializer會在使用反射之前使用Narrowing Operator CType(rightSide As String) As MyDateTime
作爲對象初始值設定項。
如果我希望將MyDateTime的xml反序列化類屬性與Narrowing Operator CType(rightSide As String) As MyDateTime
一起啓動,我應該怎麼做?
Public Class MyDateTime
Const cstUniversalTodayValue As String = "YYYY-MM-DD"
Dim _internalStringRepresentation As String
Dim _internaValue As MyDateTime
Public ReadOnly Property DynamicToday As Boolean
Get
Return _internalStringRepresentation = cstUniversalTodayValue
End Get
End Property
Public Shared Widening Operator CType(rightSide As MyDateTime) As MyDateTime
Return rightSide._internaValue
End Operator
Public Shared Widening Operator CType(rightSide As MyDateTime) As String
Return rightSide._internalStringRepresentation
End Operator
Public Shared Narrowing Operator CType(rightSide As MyDateTime) As MyDateTime
Return New MyDateTime With {._internalStringRepresentation = rightSide.ToString("yyyy-MM-dd"), ._internaValue = rightSide}
End Operator
Public Shared Narrowing Operator CType(rightSide As String) As MyDateTime
Dim instance = New MyDateTime With {._internalStringRepresentation = rightSide}
If instance.DynamicToday Then
instance._internaValue = DateTime.Today
Else
instance._internaValue = Convert.ToDateTime(rightSide)
End If
Return instance
End Operator
Public Overrides Function ToString() As String
Return Me
End Function
Public Overloads Function ToString(format As String) As String
Return _internaValue.ToString(format)
End Function
End Class
我用IXmlSerializable來實現自定義序列化,因爲我沒有公開的get/set屬性在我的對象中。非常感謝 – pluque