Я пытаюсь использовать переменную, которая является просто списком списка строк.
Я объявил это следующим образом:
Dim iRows As New List(Of List(Of String))
Затем я пытаюсь передать его в качестве параметра другому методу, и я определил метод следующим образом:
Public Sub Import(ByVal Rows As IList(Of IList(Of String)))
For Each Row As IList(Of String) In Rows
ImportRow(Row)
Next
End Sub
К сожалению, когда я пытаюсь запустить этот код, я получаю следующую ошибку, когда он пытается передать мою переменную в мой метод.
System.InvalidCastException не было обработано кодом пользователя
Сообщение = "Невозможно привести объект типа 'System.Collections.Generic.List 1[System.Collections.Generic.List
1 [System.String]]" к типу "System.Collections.Generic.IList 1[System.Collections.Generic.IList
1 [System.String]]'. «
Когда я изменяю определение метода для использования типов, а не интерфейсов, как показано ниже, это работает.
Public Sub Import(ByVal Rows As List(Of List(Of String)))
For Each Row As IList(Of String) In Rows
ImportRow(Row)
Next
End Sub
Итак, нельзя ли использовать дженерики с интерфейсами таким образом? Работает нормально, пока я их не вкладываю.