我想在一个接口中创建一个看起来像这些东西的函数;
Function GetRecords AS Ilist(of T)
当实现界面时,我会设想用户或客户或供应商等代替'T'。编译器显然不喜欢T自己指出它没有定义。我理解这一点,但肯定可以定义一些通用的东西。我尝试过使用Type,但这会导致尴尬的类型转换。使用Object似乎更成功,但我无法找到明确的最佳实践或示例。
虽然我使用IList(T)作为示例,但它可以很容易地是IEnumerable(T)或ICollection(T)。我可以在界面中实际执行此操作吗?这将在vb.net中完成。
答案 0 :(得分:1)
您需要以与创建泛型类时相同的方式创建通用接口。
Public Interface IRecords(Of T)
Function GetRecords() As IList(Of T)
End Interface
用法:
Public Class Foo
Implements IRecords(Of Foo)
Public Function GetRecords() As IList(Of Foo) Implements IRecords(Of Foo).GetRecords
'Return ...
End Function
End Class
另一个选择是在“普通”界面中创建一个通用函数:
Public Interface IRecords
Function GetRecords(Of T)() As IList(Of T)
End Interface
用法:
Public Class Foo
Implements IRecords
Public Function GetRecords(Of T)() As IList(Of T) Implements IRecords.GetRecords
'Return ...
End Function
End Class