我的問題在於,使用這樣的泛型函數有什麼負面影響?調用這個函數確實有效,並且在測試控制檯模塊中,它編譯得非常好。我知道這不是一個強類型的函數,並且是不好的練習。但它可以......完美地工作。像這樣的函數的目的是處理需要根據類型以特定格式插入的字符串輸入。我還在這裏閱讀了一些關於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
一旦它有'如果其他'全部功能,它是如何通用? –
借調:我會在這裏避免使用「通用」一詞 - 該術語具有特定的含義,*不是這個*。 –
我會說這受到http://en.wikipedia.org/wiki/God_object反模式 – rerun