我有一个类,我想用这些定义实现一个函数 Import :
1. Public Sub Import(of T)(ByRef Data() as T)
2. Public Sub Import(of T)(ByRef Data(,) as T)
3. Public Sub Import(of T)(ByRef Data()() as T)
4. Public Sub Import(of T)(ByRef Data as List(Of T))
5. Public Sub Import(of T)(ByRef Data as List(Of T()))
6. Public Sub Import(of T)(ByRef Data as List(Of List(Of T)))
7. Public Sub Import(of T)(ByRef Data() as List(Of T))
我的问题是编译器在我编写时无法确定正确的 Import 函数:
Dim ArrayList as List(of String)() = something
MyClass.Import(ArrayList)
我明白为什么,因为 1 和 7 可以代表同一个东西。
所以我试着在我的课上写:
Public Sub Import(Of T)(ByRef Data() As T)
Try
Select Case True
Case Data(0).GetType().IsArray
ImportArrayArrayT(Data)
Case Data(0).GetType.IsGenericType
ImportArrayListT(Data)
Case Else
ImportArrayT(Data)
End Select
Catch ex As Exception
End Try
End Sub
Protected Sub ImportArrayT(Of T)(ByRef Data() As T)
End Sub
Protected Sub ImportArrayArrayT(Of T)(ByRef Data As T()())
End Sub
Protected Sub ImportArrayListT(Of T)(ByRef Data() As List(Of T))
End Sub
ImportArrayArrayT(Data)
但我在、ImportArrayListT(Data)
和上遇到另一个错误ImportArrayT(Data)
。消息错误表示无法从方法的参数中推断出数据的类型。
我需要使用泛型类型,因为我不在乎类型是 String、Integer、Double...但如果它是 Array、List 或它们的组合(最大二维),我需要不同的代码。
那么你有什么想法来解决我的问题吗?我不会为每种类型(字符串、整数、...)以及列表和数组的组合编写导入函数。
谢谢