2017-04-13 9 views
0

Visual Studio 2015でVisual Basic .NETを使用していますが、私は次のことについて不思議です。今VB.NETでのインターフェイス継承:どちらが実装で参照されますか?

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 

私は(名前が示すように)InterfaceBを実装InterfaceBImplementerと呼ばれるクラス、作成するつもりです:

を私は InterfaceAから以下のように継承 InterfaceBで、 InterfaceAInterfaceBという名前の2つのインターフェイスを、持っていると仮定
Public Class InterfaceBImplementer 
    Implements InterfaceB 

    Public Property B As Integer Implements InterfaceB.B 
     Get 
      ' Snip. 
     End Get 
     Set(value As Integer) 
      ' Snip. 
     End Set 
    End Property 

' To be continued... 

これまでのところ、とても良いです。プロパティBInterfaceBにしかないので、どこから来たのか疑問はありません。

ただし、InterfaceBは、AInterfaceAから継承します。 InterfaceBImplementerA次の実装の両方が有効であると表示されます。

' 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 

一つは私が好むでしょうか?両者の間に違いはありますか?それとも重要ではありませんか? 2つが同じ場合、この状況でどのようなコンベンションやベストプラクティスを実行する必要がありますか?

+1

あなたがVSに自動的に行うようにすると、InterfaceA.A –

+1

が実装されます.2番目のオプション 'InterfaceB.A Implements InterfaceB.A'は、' InterfaceA'がどこから来たのかが明確でないからです。 –

答えて

1

InterfaceBImplementerクラスにキャストされるintefraceを実装しようとしているので、Public Property A As String Implements InterfaceB.Aです。

+0

私には意味があります。 –

関連する問題