Я читаю текстовый файл, перевожу данные, где каждая строка идет либо в объекте заголовка, либо в объекте items. У меня проблема с nullables
'p' в приведенном ниже коде исходит от
Dim properties As PropertyInfo() = GetType(UploadMain).GetProperties()
Приведенный ниже код выдает ошибку:
Неверное приведение из «System.DateTime» к «System.Nullable» 1 [[System.DateTime, mscorlib, Версия = 4.0.0.0, Культура = Нейтральный, PublicKeyToken = b77a5c561934e089]] '
p.SetValue(header, Convert.ChangeType(dataObject, p.PropertyType))
соответствующее свойство в классе
private _orderDate As Date?
Public Property OrderDate As Date?
Get
Return _orderDate
End Get
Set(value As Date?)
_orderDate = value
End Set
End Property
Осмотревшись, нашел следующую функцию, которую я перевел с C #
Public Class ChangeTypeUtlity
Public Shared Function ChangeType(Of T)(ByVal value As Object) As T
Dim conversionType As Type = GetType(T)
If conversionType.IsGenericType AndAlso conversionType.GetGenericTypeDefinition().Equals(GetType(Nullable)) Then
If value Is Nothing Then
Return Nothing
Else
Dim nullableConverter As NullableConverter = New NullableConverter(conversionType)
conversionType = nullableConverter.UnderlyingType
End If
End If
Return CType(Convert.ChangeType(value, conversionType), T)
End Function
End Class
Я пробовал и с type1, и с type2, но получаю сообщение об ошибке, что оно не определено.
Dim type1 as Type = p.[GetType]()
Dim type2 As Type = p.PropertyType
p.SetValue(header, ChangeTypeUtlity.ChangeType(Of type2)(dataObject))
Как передать свой тип свойства вышеупомянутой функции?
Вы можете дать решение в C #. Это не обязательно должен быть VB.Net