ここでの私の質問は、このような一般的な関数を使用することの悪影響は何ですか? この関数の呼び出しは機能し、テスト コンソール モジュールでは完全に正常にコンパイルされます。これは厳密に型指定された関数ではなく、%100 悪い習慣であることはわかっています。しかし、それは機能します...完全に。このような関数の目的は、タイプに応じて特定の形式で挿入する必要がある文字列入力を処理することです。また、これに関するいくつかの他の質問をスタックオーバーフローで読み、(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