Generics 创建泛型强类型数据表资源管理器
我试图创建一个泛型类,该类将为任何强类型数据表提供一些附加功能。其中许多功能使用一个函数,该函数允许用户指定条件,以便使用强类型字段在强类型数据表中查找行。当我尝试将Func(Of T,Boolean)传递到需要Func(Of datarow,Boolean)的Where子句时,就会出现问题。我的泛型类确保T从datarow继承,所以我不明白为什么会得到无效的强制转换异常Generics 创建泛型强类型数据表资源管理器,generics,Generics,我试图创建一个泛型类,该类将为任何强类型数据表提供一些附加功能。其中许多功能使用一个函数,该函数允许用户指定条件,以便使用强类型字段在强类型数据表中查找行。当我尝试将Func(Of T,Boolean)传递到需要Func(Of datarow,Boolean)的Where子句时,就会出现问题。我的泛型类确保T从datarow继承,所以我不明白为什么会得到无效的强制转换异常 Module Module1 Sub Main() Dim strongTable As New S
Module Module1
Sub Main()
Dim strongTable As New StrongTypedTable
Dim explorer As New DependencyExplorer(Of StrongTypedRow)(strongTable)
Dim row As StrongTypedRow = explorer.FindRows(Function(r) r.MyColumn = 1)
End Sub
End Module
Public Class StrongTypedTable
Inherits DataTable
Public Sub New()
Columns.Add(New DataColumn("MyColumn", GetType(Integer)))
End Sub
Protected Overrides Function GetRowType() As Type
Return GetType(StrongTypedRow)
End Function
Protected Overrides Function NewRowFromBuilder(builder As DataRowBuilder) As DataRow
Return New StrongTypedRow(builder)
End Function
End Class
Public Class StrongTypedRow
Inherits DataRow
Friend Sub New(builder As DataRowBuilder)
MyBase.New(builder)
End Sub
Public Property MyColumn() As String = MyBase.Item("MyColumn")
End Class
Public Class DependencyExplorer(Of rowType As DataRow)
Private _table As DataTable
Public Function FindRows(ByVal whereClause As Func(Of rowType, Boolean)) As IEnumerable(Of rowType)
Return _table.AsEnumerable.Where(whereClause)
End Function
Public Sub New(ByVal table As DataTable)
_table = table
End Sub
End Class