【发布时间】:2011-01-02 15:38:02
【问题描述】:
好的,我一直在尝试在示例项目中使用 vb.net 中的泛型。目前,它看起来像这样:
我有一个名为 IRow 的接口(以及一个将其实现为 Datarow 的类)。
第二个接口是 ICanGetByRow,如下所示:
Public Interface ICanGetByRow(Of T)
Function GetByRow(ByVal Row As IRow) As T
End Interface
该函数只需要一个 IRow 并将其转换为 T。这很容易。现在,为了更方便访问,我想在 IRow 接口中实现一个函数,该函数获取行并将其转换为所述 ICanGetByRow。
以下功能增强了我的界面
Function GetObj(Of T As ICanGetByRow(Of T))() As T
您可能会看到问题所在。如果我这样实现:
Public Function GetObj(Of T As ICanGetByRow(Of T))() As T Implements IRow.GetObj
Dim foo As New T
foo.GetByRow(Me)
Return foo
End Function
我不会被允许构造一个新的 T,当我试图通过告诉泛型函数我的接口有一个构造函数来让它工作时,他不会让我再调用 GetByRow。
Public Function GetObj(Of T As New, ICanGetByRow)() As T Implements IRow.GetObj
Dim foo As New T
foo.GetByRow(Me)
Return foo
End Function
我认为我的问题是我不知道如何告诉泛型函数它将获得一个具有构造函数的 ICanGetByRow(of T),而且我可能做错了。
【问题讨论】: