#vb.net #typeconverter
#vb.net #typeconverter
Вопрос:
Я изо всех сил пытаюсь понять использование TypeConverters и как их использовать.
Imports System.ComponentModel
Imports System.Globalization
<TypeConverter(GetType(OrderTypeConverter))>
Public Class OrderType1
Public Sub New()
Public Sub New(Order As OrderType2)
OrderNumber = Order.OrderNo
'Etc Etc
End Sub
Public Property OrderNumber As String
Public Property OrderDescription As String
End Class
Public Class OrderType2
Public Property OrderNo As String
Public Property Description As String
End Class
Public Class OrderTypeConverter
Inherits TypeConverter
Public Overrides Function CanConvertTo(context As ITypeDescriptorContext, destinationType As Type) As Boolean
If destinationType = GetType(OrderType2) Then
Return True
End If
Return MyBase.CanConvertTo(context, destinationType)
End Function
Public Overrides Function ConvertTo(context As ITypeDescriptorContext, culture As CultureInfo, value As Object, destinationType As Type) As Object
If destinationType = GetType(OrderType2) Then
Dim OldOrder As OrderType1 = DirectCast(value, OrderType1)
Dim NewOrder As New OrderType2
NewOrder.Description = OldOrder.OrderDescription
NewOrder.OrderNo = OldOrder.OrderNumber
Return NewOrder
End If
Return MyBase.ConvertTo(context, culture, value, destinationType)
End Function
End Class
Я не уверен, как реализовать преобразование, если вышеуказанное верно.
Я знаю, что альтернативой было бы передать порядок OrderType2 в новый метод Порядка OrderType1, а затем просмотреть все свойства и т.д. И т.п. Но должен быть лучший способ
Комментарии:
1. Ваш TypeConverter в любом случае копирует значения свойств одно за другим, так что это экономит? Похоже, что в этих двух типах нет ничего отличного. Я подозреваю, что наследование может сыграть роль во всем, что вы пытаетесь сделать.
2. Я не контролирую OrderType2, и класс не может быть унаследован. Я пытаюсь придерживаться наилучшей практики для получения опыта обучения, а не подделывать ее.