Должен быть .\SQLExpress
или localhost\SQLExpress
без знака $ в конце
См. Также здесь http://www.connectionstrings.com/sql-server-2008
Добавление этого решения в качестве еще одного ответа, оно должно делать то, что вы хотите.
Sub DoIt(Of T As IBar)(ByVal l As List(Of T))
End Sub
Определение подгруппы с помощью обобщений.
Повторяющийся вопрос , но для C # (та же проблема). Там есть разные ответы, которые вы можете перевести на VB. Причина, по которой вы не можете этого сделать, - ковариация и контравариантность .
Я не специалист по VB, но мой предпочтительный способ C # - вызвать System.Collections.Generic.List
. (Я не знаю, как это переводится, если это так, на VB.)
Перевод VB:
System.Collections.Generic.List (Of T) .ConvertAll (Of TOut) (Function (x) CType (x, TOut))
Является ли производный базовый класс не вариантом, и базовый класс должен реализовывать интерфейс. Это заставит его работать.
Class BaseFoo
Implements IBar
End Class
Class Foo
Inherits BaseFoo
End Class
Sub DoIt(ByVal l As List(Of BaseFoo))
End Sub
Что-то вроде этого.
Проблема в том, что общие типы, такие как List (Of T), не конвертируются в какой-либо другой List (Of U), даже если приведение гарантированно безопасно. Помощь для этого приходит в VS2010, который, конечно, сейчас вам не очень помогает.
Как я думаю, это также было предложено в связанной ветке, если DoIt может принимать IEnumerable из IBar вместо списка, вы могли бы do:
DoIt(FooList.Cast(Of IBar))
или если вам действительно нужен список (и вы можете взять на себя накладные расходы), вы можете получить список:
DoIt(FooList.Cast(Of IBar).ToList)