2014-03-13 47 views
0

这里是我的情况:接口和继承:从依附访问继承的方法注入

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 

我以前就遇到了这个,但我想知道如果有一个很好的解释。我假设这是因为接口在代码合同中没有这些方法。我明白了。什么是实现这种类型的功能的最佳方式,我在基类中有大量的常用方法,但希望子类继承并将其依赖注入到服务类中?

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

回答

0

,而不是添加方法的几个接口的,我提出以下方法:

  • 创建一个共同的方法基本接口。
  • 使用Inherits关键字从基础接口派生出需要常用方法的接口。
  • 在基类中实现基接口。
  • 您不需要在派生类中再次实现这些方法。但是,如果您将基类中的实现标记为可超越的,那么如果需要更改派生类中的实现,则可以覆盖派生类中的方法。

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

+0

有一次,我解释了这一点,这是非常有道理的。谢谢。 – jlrolin