Интерфейс создания интерфейса VB.NET - PullRequest
5 голосов
/ 24 января 2012

Я просматривал какой-то унаследованный код и заметил кое-что, что показалось мне особенно странным.

Скажем, у нас есть конкретный класс TestClass. TestClass реализует интерфейс ITestClass.

Какого поведения мне следует ожидать в следующем случае? (Я не осознавал, что это вообще возможно)

Dim testClass as TestClass = Nothing
Try
   testClass = New ITestClass
   ...
End Try

Насколько я понимаю, вы должны были бы использовать TestClass вместо его интерфейса.

1 Ответ

8 голосов
/ 24 января 2012

Существует один особый случай, когда интерфейс может создаваться как класс, и он связан с CoClassAttribute .Подробности смотрите в этом блоге:

Пример из сообщения блога, переведенного на VB:

<ComImport(), Guid("C906C002-B214-40d7-8941-F223868B39A5"), CoClass(GetType(Foo))> _
Public Interface IFoo
End Interface

Public Class Foo
    Implements IFoo
End Class

Sub Main()
    Dim f As New IFoo()    ' Compiles
End Sub
...