【发布时间】:2015-05-08 06:17:53
【问题描述】:
目前,我为DataRow编写了扩展方法,将行值转换为特定类型的对象,方法如下:
<ExtensionAttribute> _
Public Function GetValue(Of T)(row As DataRow, columnName As String) As T
'IF TABLE DOESN'T CONTAIN COLUMN RETURN DEFAULT OF T
If Not row.Table.Columns.Contains(columnName) Then
Return Activator.CreateInstance(Of T)()
'IF ROW IS DB NULL RETURN DEFAULT OF T
If row(columnName) Is DBNull.Value Then
Return Activator.CreateInstance(Of T)()
'RETURN T
Return CType(row(columnName), T)
End Function
我的问题是如何改进这种用户可以设置对象 (T) 的默认值的方法(例如,对于不返回默认 FALSE 值而不是 TRUE 的布尔类型)。肯定会是扩展方法的可选参数。
【问题讨论】:
-
您是否知道框架中已经有一个名为
T Field<T>(this DataRow row, string columnName)的函数?见:msdn.microsoft.com/en-us/library/bb360891(v=vs.90).aspx -
@Magnus: ... 它甚至支持可空类型,这比使用给定类型的默认值(OP 所做的)要好。
标签: asp.net vb.net extension-methods