私は次のような機能を持っています:
Function foo(ByVal c As CustomType, ByValue str as String) As Object
Dim o as Object
Select Case c.TypeName
Case "System.String"
If str = String.Empty Then
o = DBNull.Value
Else
o = value
End If
Case "System.Int64"
Try
o = Long.Parse(value, Globalization.NumberStyles.Any)
Catch
o = DBNull.Value
End Try
Case "System.Double"
Try
o = Double.Parse(value, Globalization.NumberStyles.Any)
Catch
o = DBNull.Value
End Try
Case "System.Int32"
Try
o = Int32.Parse(value, Globalization.NumberStyles.Any)
Catch
o = DBNull.Value
End Try
Case "System.DateTime"
Try
o = DateTime.Parse(value)
Catch
o = DBNull.Value
End Try
Return o
End Function
この関数を使用すると、汎用バージョンを作成したくなります。C ++のような.NETでは部分的な特殊化は許可されていないため(ここで間違っている場合は訂正してください)、ジェネリックスの機能を使用するさまざまな方法は何ですか。私は恥ずかしい試みをしましたが失敗しました:
Function foo(Of T)(...) as Object
Dim o As Object
Try
o = T.Parse(...) 'This doesnt work
Catch
o = DBNull.Value
End Try
...
End Function
'Add functions for handling String and DateTime maybe?