接口和继承:从依赖注入类访问继承的方法

时间:2014-03-13 21:11:07

标签: vb.net oop inheritance interface

这是我的情景:

Public Interface IFlow
End Interface

Public Class Base
   Protected _var1 as String
   Protected _var2 as String

   Public Property Item(str As String) As String...

   Public Function Func() As String...
End Class

Public Class MyFlow
Inherits Base
Implements IFlow
...
End Class

Public Class ServiceCaller
   Private _flow As IFlow
   Public Sub New(ByVal flow As IFlow) 
     _flow = flow
   End Sub

   Public Function Test() As String
     _flow.Func() <--- Can't call this
   End Function
End Class
我以前碰到过这个,但我想知道是否有一个很好的解释。我假设这是因为界面在代码合同中没有这些方法。我明白了。实现这种类型功能的最佳方法是什么,我在基类中有一堆常用方法,但希望子类继承并将依赖注入服务类?

最好的方法是简单地将这些方法放入接口并在子类中的那些实现方法中调用基本方法吗?

1 个答案:

答案 0 :(得分:0)

我没有将方法添加到多个接口,而是提出以下方法:

  • 使用常用方法创建基本界面。
  • 使用Inherits关键字从基接口派生需要常用方法的接口。
  • 在基类中实现基接口。
  • 您不需要在派生类中再次实现这些方法。但是,如果将基类中的实现标记为overriable,则可以在需要更改派生类中的实现时覆盖派生类中的方法。

这样,您不需要将方法添加到多个接口,并再次将调用传递给每个类中的基类实现。