Exemplarische Vorgehensweise: Erstellen und Implementieren von Schnittstellen (Visual Basic)

Schnittstellen beschreiben die Merkmale von Eigenschaften, Methoden und Ereignissen, überlassen die Implementierungsdetails jedoch den Strukturen oder Klassen.

In dieser exemplarischen Vorgehensweise wird das Deklarieren und Implementieren einer Schnittstelle veranschaulicht.

Hinweis

Diese exemplarische Vorgehensweise enthält keine Informationen zum Erstellen einer Benutzeroberfläche.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

So definieren Sie eine Schnittstelle

  1. Öffnen Sie ein neues Visual Basic-Windows-Anwendungsprojekt.

  2. Fügen Sie dem Projekt ein neues Modul hinzu, indem Sie im Menü Projekt auf Modul hinzufügen klicken.

  3. Geben Sie dem neuen Modul den Namen Module1.vb, und klicken Sie auf Hinzufügen. Der Code für das neue Modul wird angezeigt.

  4. Definieren Sie eine Schnittstelle namens TestInterface innerhalb von Module1, indem Sie zwischen den Anweisungen Module und End ModuleInterface TestInterface eingeben und dann die EINGABETASTE drücken. Der Code-Editor zieht das Schlüsselwort Interface ein und fügt eine End Interface-Anweisung hinzu, um einen Codeblock zu bilden.

  5. Definieren Sie eine Eigenschaft, eine Methode und ein Ereignis für die Schnittstelle, indem Sie den folgenden Code zwischen den Anweisungen Interface und End Interface platzieren:

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

Implementierung

Möglicherweise stellen Sie fest, dass sich die Syntax, die zum Deklarieren von Schnittstellenmembern verwendet wird, von der Syntax unterscheidet, die zum Deklarieren von Klassenmembern verwendet wird. Dieser Unterschied spiegelt die Tatsache wider, dass Schnittstellen keinen Implementierungscode enthalten können.

So implementieren Sie die Schnittstelle

  1. Fügen Sie eine Klasse namens ImplementationClass hinzu, indem Sie die folgende Anweisung zu Module1 hinzufügen, hinter der End Interface-Anweisung, aber vor der End Module-Anweisung, und drücken Sie dann die EINGABETASTE:

    Class ImplementationClass
    

    Wenn Sie in der integrierten Entwicklungsumgebung (IDE) arbeiten, stellt der Code-Editor eine passende End Class-Anweisung bereit, wenn Sie die EINGABETASTE drücken.

  2. Fügen Sie die folgende Implements-Anweisung zu ImplementationClass hinzu, die der von der Klasse implementierte Schnittstelle einen Namen gibt:

    Implements TestInterface
    

    Wenn die Implements-Anweisung getrennt von anderen Elementen am Anfang einer Klasse oder Struktur aufgeführt wird, zeigt dies an, dass die Klasse oder Struktur eine Schnittstelle implementiert.

    Wenn Sie in der integrierten Entwicklungsumgebung (IDE) arbeiten, implementiert der Code-Editor die Klassenmember, die für TestInterface erforderlich sind, wenn Sie die EINGABETASTE drücken. Sie können dann den nächsten Schritt überspringen.

  3. Wenn Sie nicht in der integrierten Entwicklungsumgebung (IDE) arbeiten, müssen Sie alle Member der Schnittstelle MyInterface implementieren. Fügen Sie den folgenden Code zu ImplementationClass hinzu, um Event1, Method1 und Prop1 zu implementieren:

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    Die Implements-Anweisung benennt die Schnittstelle und den Schnittstellenmember, die implementiert werden.

  4. Schließen Sie die Definition von Prop1 ab, indem Sie der Klasse, die den Eigenschaftswert gespeichert hat, ein privates Feld hinzufügen:

    ' Holds the value of the property.
    Private pval As Integer
    

    Geben Sie den Wert des pval aus dem get-Accessor der Eigenschaft zurück.

    Return pval
    

    Legen Sie den Wert von pval im get-Accessor der Eigenschaft fest.

    pval = value
    
  5. Schließen Sie die Definition von Method1 ab, indem Sie den folgenden Code hinzufügen.

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

So testen Sie die Implementierung der Schnittstelle

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Startformular für Ihr Projekt, und klicken Sie dann auf Code anzeigen. Der Editor zeigt die Klasse für Ihr Startformular an. Standardmäßig heißt das Startformular Form1.

  2. Fügen Sie der Form1-Klasse das folgende testInstance-Feld hinzu:

    Dim WithEvents testInstance As TestInterface
    

    Wenn Sie testInstance als WithEvents deklarieren, kann die Form1--Klasse ihre Ereignisse behandeln.

  3. Fügen Sie der Form1-Klasse den folgenden Ereignishandler hinzu, um Ereignisse zu behandeln, die von testInstance ausgelöst werden:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Fügen Sie der Form1-Klasse eine Unterroutine namens Test hinzu, um die Implementierungsklasse zu testen:

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    Die Test-Prozedur erstellt eine Instanz der Klasse, die MyInterface implementiert, weist dem testInstance-Feld diese Instanz zu, legt eine Eigenschaft fest und führt eine Methode über die Schnittstelle aus.

  5. Fügen Sie Code hinzu, um die Test-Prozedur aus der Form1 Load-Prozedur Ihres Startformulars aufzurufen:

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. Drücken Sie F5, um die Test-Prozedur auszuführen. Die Meldung „Prop1 wurde auf 9 festgelegt“ wird angezeigt. Nachdem Sie auf „OK“ geklickt haben, wird die Meldung „Der X-Parameter für Method1 ist 5“ angezeigt. Klicken Sie auf „OK“, und die Meldung „Der Ereignishandler hat das Ereignis abgefangen“ wird angezeigt.

Siehe auch