VB.NET中的接口继承:我在实现中指的是哪一个?

VB.NET中的接口继承:我在实现中指的是哪一个?,vb.net,inheritance,interface,Vb.net,Inheritance,Interface,我正在Visual Studio 2015中使用Visual Basic.NET,我想了解以下内容。假设我有两个接口,名为InterfaceA和InterfaceB,InterfaceB继承自InterfaceA,如下所示: Public Interface InterfaceA Property A As String ' Type not important here. End Interface Public Interface InterfaceB Inherits I

我正在Visual Studio 2015中使用Visual Basic.NET,我想了解以下内容。假设我有两个接口,名为InterfaceA和InterfaceB,InterfaceB继承自InterfaceA,如下所示:

Public Interface InterfaceA
    Property A As String ' Type not important here.
End Interface

Public Interface InterfaceB
    Inherits InterfaceA

    Property B As Integer ' Type not important here, either.
End Interface
现在我将创建一个名为InterfaceBImplementer的类,顾名思义,它实现InterfaceB:

到目前为止,一切顺利。属性B只存在于InterfaceB中,因此不存在它来自何处的问题

但是,InterfaceB从InterfaceA继承了财产A。InterfaceBImplementer的以下两种实现似乎都是有效的:

' Referring to InterfaceA.
Public Property A As String Implements InterfaceA.A
    Get
        ' Snip.
    End Get
    Set(value As String)
        ' Snip.
    End Set
End Property
或:


我更喜欢哪一个?这两者之间有什么区别吗?或者这无关紧要?在这种情况下,如果两者相同,我应该遵循什么约定或最佳实践?

这是一个公共属性,因为字符串实现了InterfaceB.A,因为您将要在InterfaceImplementer类上实现intefrace。

当您让VS自动执行时,它确实实现了InterfaceA.AMy首选项是第二个选项,实现InterfaceB.A,只是因为它不清楚InterfaceA来自何处。对我来说是有意义的。
' Referring to InterfaceA.
Public Property A As String Implements InterfaceA.A
    Get
        ' Snip.
    End Get
    Set(value As String)
        ' Snip.
    End Set
End Property
' Referring to InterfaceB.
Public Property A As String Implements InterfaceB.A
    Get
        ' Snip.
    End Get
    Set(value As String)
        ' Snip.
    End Set
End Property