我正在查看我们拥有的一些遗留代码,我注意到一些让我感到特别奇怪的东西。
假设我们有具体类 TestClass
. TestClass
实现接口(interface)ITestClass
.
那么,在以下情况下,我应该期待什么样的行为呢? (我什至没有意识到这是可能的)
Dim testClass as TestClass = Nothing
Try
testClass = New ITestClass
...
End Try
据我了解,您将被迫使用
TestClass
而不是它的接口(interface)对应物。
最佳答案
有一种特殊情况,接口(interface)可以像类一样被实例化,它与 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
关于VB.NET 接口(interface)实例化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988803/