这是多重继承吗?或者像C#这样的Inherits / Implements的另一种语法?

时间:2011-08-02 04:21:55

标签: vb.net inheritance interface

我想弄清楚为什么会有效

Public Interface IFullService
    Inherits ISerializableObjectLayerService, IVersionService
    <OperationContract()>
    Function StartTrac() As OperationResult(Of Boolean)
    <OperationContract()>
    Function StopTrac() As OperationResult(Of Boolean)
    <OperationContract()>
    Function IsTracRunning() As OperationResult(Of Boolean)
End Interface

接口不允许你指定它“实现”另一个接口,但在我的情况下,我需要声明我有两个接口,只是偶然我把逗号放入并进入另一个接口,构建和运行我的单元测试,它的工作原理......

以前我一直在尝试遵循单个继承树,例如

<ServiceContract()>
Public Interface IFullService
    Inherits IVersionService
    <OperationContract()>
    Function StartTrac() As OperationResult(Of Boolean)
    <OperationContract()>
    Function StopTrac() As OperationResult(Of Boolean)
    <OperationContract()>
    Function IsTracRunning() As OperationResult(Of Boolean)
End Interface

<ServiceContract()>
Public Interface IVersionService
    Inherits ISerializableObjectLayerService
    <OperationContract()>
    Function GetVersionsSince(ByVal VersionNumber As Long, IncludeBetas As Boolean) As OperationResult(Of Core.Setting.MemoryBmsReleaseInfo())
End Interface

正如您在此处所见,IFullService继承了IVersionService,然后继承IVersionService。但是在我的情况下,我需要一种方法来实现IVersionService而不实现ISerializableObjectLayerService,这就是我的“工作”解决方案。

不幸的是,我无法弄清楚如何确定这是做什么的。我搜索了stackoverflow,google,msdn,我找不到使用Inherits的例子,

有些大师可以提供一些信息,说明这是完成的(如果你能提供MSDN链接会很棒),因为我不喜欢做一些我不理解的事情(因为它可能导致问题)在将来你可以解决:D)

希望这个问题不太苛刻:D

2 个答案:

答案 0 :(得分:2)

Microsoft文档确实提到了它:

http://msdn.microsoft.com/en-us/library/ms173156.aspx

  

接口本身可以从多个接口继承。

编辑:Visual Studio的早期版本的另一个链接(所有VB,带示例),但信息仍然适用。

http://msdn.microsoft.com/en-us/library/aa711871%28v=vs.71%29.aspx

答案 1 :(得分:1)

是的,它是多重继承

...接口。

这意味着任何IFullService IS A(n) IVersionService 。 (当你看到“任何A也是B”时,那就是“A继承自B”的含义。)

接口继承没有像多继承这样的问题,所以允许使用MI。 :)