摘要 class 使用 subclass 中实现的接口?

Abstract class using an interface impleented in subclass?

我有一个同时使用抽象 class 和接口的想法,但我不确定是否可以实现我的想法以及如何实现。

我有一个抽象的 class 建模设备,只包含抽象功能。实现后,这个 class 基本上用作特定设备的驱动程序。

每个设备可能有不同的功能,我试图将功能集建模为不同的接口,class 设计师可能会或可能不会实现这些接口。

有没有一种机制可以让我确定设备 class 的子 class 是否正在实现这些接口。我必须从 super class 确定它,然后才能从那里调用 subclass 中定义的函数。

这对我来说听起来不可能,但我很好奇是否有人有更多的直觉,或者可能有更好的解决方案。

在下面的示例中,我已经说明了我的观点。我希望能够有一个设备类型的对象,并通过某种机制调用 subclass 中实现的函数。

谢谢!

Public MustInherit Class Device
   Public MustOverride Sub One()

   Public Function SupportsBonding As Boolean
      'Returns true if subclass implments interface
   End Function
End Class

Public Interface Bonding
   Sub Two()
   Sub Three()
End Interface

Public Class Device1
    Inherits Device
    Implements Bonding 

    Public Sub Two()
    End Sub

    Public Sub Three()
    End Sub
End Class

您始终可以使用 TypeOf operator using the Me 关键字,例如:

If TypeOf Me Is IAmSomeInterface Then
     ...
End If

即使此代码在超类中 运行,它也将始终针对对象的运行时类型起作用,因此您将获得子类信息。

或者,如果您打算调用接口上的方法,您可以使用 TryCast 代替:

Dim someObject = TryCast(Me,IAmSomeInterface)
If Not someObject Is Nothing Then
     someObject.DoSomething()
End If