vb.net - 为什么接口(interface)不是强类型的?

标签 vb.net interface strong-typing

我有以下代码编译没有问题。当然,在执行 Dim C As IDoThingsC = GetThing_C() 时,我遇到了无效的转换异常。我错过了什么吗?您是否想返回一个不满足函数返回值的接口(interface)要求的对象?

Public Class ClassA

  Public Sub DoThings_A()
    Debug.Print("Doing A things...")
  End Sub

End Class


Public Class ClassB
  Implements IDoThingsC

  Public Sub DoThings_B()
    Debug.Print("Doing B things...")
  End Sub

  Public Sub DoThings_C() Implements IDoThingsC.DoThings_C
    Debug.Print("Doing C things...")
  End Sub

End Class


Public Interface IDoThingsC

  Sub DoThings_C()

End Interface


Public Class aTest

  Public Sub Test()

    Dim C As IDoThingsC = GetThing_C()
    C.DoThings_C()

  End Sub


  Public Function GetThing_C() As IDoThingsC

    Dim Thing As ClassA = New ClassA
    Thing.DoThings_A()

    Return Thing

  End Function


End Class

最佳答案

使用Option Strict On位于源代码文件的顶部以捕获此类问题。您将收到编译时错误而不是运行时错误:

error BC30512: Option Strict On disallows implicit conversions from 'ClassA' to 'IDoThingsC'.

关于vb.net - 为什么接口(interface)不是强类型的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030020/

相关文章:

java - 需要建议 : static methods in JAVA interface

java - 在java接口(interface)中使用实现类型

c# - 从具有相同方法名称的多个接口(interface)继承

regex - VB.NET 中的 E.KeyCode 和 Regex

wpf - 将数字映射到相应的字母

database - 从 Visual Basic 2010 到 MS ACCESS 2007 上的 INSERT INTO 命令出现语法错误

asp.net - 从ASP.Net WebSite转换为Web Application项目后的MasterType问题

c# - 为什么我不能从 System.Object 中提取一个 ushort,然后将其转换为一个 uint? (C#)

webforms - ASP.NET Web Forms(4.5)强类型模型绑定(bind)——ListView的InsertItemTemplate中的DropDownList

c# - 使用具有强类型方法的类型对象