关于良好做法的问题,使用ExtensionMethod!
我想获取datareader的值,但有时候,我想避免使用null值,因为VB.net和C#是不同的(默认函数不存在于vb中),我这样做了:
Imports System.Runtime.CompilerServices
Imports System.Data.SqlClient
Public Module ExtensionMethodeSQL
<Extension()>
Public Function GetValueOrDefault(Of T)(ByVal dtReader As SqlDataReader, ByVal index As Integer) As T
If dtReader.IsDBNull(index) = True Then
If GetType(T).IsValueType = True Then
Dim defaultValue As T = Nothing
Return defaultValue
Else
Return Nothing
End If
Else
Return CType(dtReader.GetValue(index), T)
End If
End Function
<Extension()>
Public Function GetValueOrDefault(Of T)(ByVal aString As SqlDataReader, ByVal fieldName As String) As T
Return aString.GetValueOrDefault(Of T)(aString.GetOrdinal(fieldName))
End Function
End Module
这样好吗?是什么让它更好?
不确定使用CType,是否更适合ValueType?
THX