.net ExtensionMethodeSQL Datareader GetValueOrDefault

时间:2016-02-24 16:25:17

标签: .net vb.net extension-methods datareader

关于良好做法的问题,使用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

0 个答案:

没有答案