Мой вопрос здесь, каковы негативные последствия использования обобщенной функции, такой как эта? Вызов этой функции работает, и в модуле тестовой консоли он прекрасно компилируется. Я знаю, что это не строго типизированная функция, и это 100% плохая практика. Но это работает ... отлично. Назначение функции, подобной этой, заключается в обработке строкового ввода, который необходимо вставить в определенном формате в зависимости от типа. Я также прочитал некоторые другие вопросы по этому вопросу здесь, на stackoverflow, и предложения, указывающие на использование (Of T) функций и подобных изменений. Почему бы не сделать это таким образом? или есть еще один простой способ сделать это, не создавая ничего класса или больших объемов кода. Я знаю, что это не "элегантный" способ справиться с этим, поэтому, если у кого-то есть предложения, я весь слух Спасибо! :)
Private Function ConvertFieldValueByType(ByVal type As Field_Type, ByVal value As String)
If type = Field_Type.FIELD_TYPE_DATE Then
Dim dt As Date = DirectCast(TypeDescriptor.GetConverter(New Date(1990, 5, 6)).ConvertFrom(value), Date)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_DATETIME Then
Dim dt As DateTime = DirectCast(TypeDescriptor.GetConverter(New DateTime(1990, 5, 6)).ConvertFrom(value), DateTime)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_BLOB Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_LIST Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_LONG Then
Return Convert.ToInt64(value)
ElseIf type = Field_Type.FIELD_TYPE_NUMBER Then
Return Convert.ToInt32(value)
ElseIf type = Field_Type.FIELD_TYPE_SHORT Then
Return Convert.ToInt16(value)
ElseIf type = Field_Type.FIELD_TYPE_STRING Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_TIME Then
Dim dt As DateTime = DirectCast(TypeDescriptor.GetConverter(New DateTime(1990, 5, 6)).ConvertFrom(value), DateTime)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_UNKNOWN Then
Return value
Else
Return value
End If
End Function