Freigeben über


Anleitung: Vererbung mit COM-Objekten implementieren (Visual Basic)

Sie können Visual Basic-Klassen von Public Klassen in COM-Objekten ableiten, auch von denen, die in früheren Versionen von Visual Basic erstellt wurden. Die Eigenschaften und Methoden von Klassen, die von COM-Objekten geerbt werden, können überschrieben oder überladen werden, ebenso wie Eigenschaften und Methoden jeder anderen Basisklasse überschrieben oder überladen werden können. Die Vererbung von COM-Objekten ist nützlich, wenn Sie über eine vorhandene Klassenbibliothek verfügen, die Sie nicht neu kompilieren möchten.

Das folgende Verfahren zeigt, wie Sie mit Visual Basic 6.0 ein COM-Objekt erstellen, das eine Klasse enthält, und sie dann als Basisklasse verwenden.

Hinweis

Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.

So erstellen Sie das COM-Objekt, das in dieser exemplarischen Vorgehensweise verwendet wird

  1. Öffnen Sie in Visual Basic 6.0 ein neues ActiveX-DLL-Projekt. Ein Projekt mit dem Namen Project1 wird erstellt. Es hat eine Klasse mit dem Namen Class1.

  2. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf Project1, und klicken Sie dann auf Project1-Eigenschaften. Das Dialogfeld 'Projekteigenschaften' wird angezeigt.

  3. Ändern Sie auf der Registerkarte "Allgemein" des Dialogfelds "Projekteigenschaften" den Projektnamen, indem Sie das Feld ComObject1" eingeben.

  4. Klicken Sie im Projekt-Explorer mit der rechten Maustaste Class1, und klicken Sie dann auf "Eigenschaften". Das Eigenschaftenfenster für die Klasse wird angezeigt.

  5. Ändern Sie die Name -Eigenschaft in MathFunctions.

  6. Klicken Sie im Projekt-Explorer mit der rechten Maustaste MathFunctions, und klicken Sie dann auf "Code anzeigen". Der Code-Editor wird angezeigt.

  7. Fügen Sie eine lokale Variable für den Eigenschaftswert hinzu:

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Fügen Sie Eigenschaftenprozeduren für die Eigenschaften Let und Get hinzu:

    Public Property Let Prop1(ByVal vData As Integer)
       'Used when assigning a value to the property.
       mvarProp1 = vData
    End Property
    Public Property Get Prop1() As Integer
       'Used when retrieving a property's value.
       Prop1 = mvarProp1
    End Property
    
  9. Funktion hinzufügen:

    Function AddNumbers(
       ByVal SomeNumber As Integer,
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Erstellen und registrieren Sie das COM-Objekt, indem Sie im Menü "Datei" auf "ComObject1.dll erstellen" klicken.

    Hinweis

    Obwohl Sie eine Klasse, die mit Visual Basic als COM-Objekt erstellt wurde, verfügbar machen können, handelt es sich nicht um ein echtes COM-Objekt und kann in dieser exemplarischen Vorgehensweise nicht verwendet werden. Ausführliche Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen.

Interopassemblys

Im folgenden Verfahren erstellen Sie eine Interopassembly, die als Brücke zwischen nicht verwaltetem Code (z. B. einem COM-Objekt) und dem von Visual Studio verwendeten verwalteten Code fungiert. Die Interopassembly, die Visual Basic erstellt, verarbeitet viele Details der Arbeit mit COM-Objekten, z. B. Interop-Marshalling, den Prozess der Verpackung von Parametern und Rückgabewerte in gleichwertige Datentypen, während sie zu und von COM-Objekten wechseln. Der Verweis in der Visual Basic-Anwendung verweist auf die Interopassembly, nicht auf das tatsächliche COM-Objekt.

So verwenden Sie ein COM-Objekt mit Visual Basic 2005 und höheren Versionen

  1. Öffnen Sie ein neues Visual Basic Windows Application-Projekt.

  2. Klicken Sie im Menü Project auf Verweis hinzufügen.

    Das Dialogfeld "Verweis hinzufügen " wird angezeigt.

  3. Doppelklicken Sie auf der Registerkarte COM in der Liste "ComObject1" auf , und klicken Sie auf OK.

  4. Klicken Sie im Menü Project auf Neues Element hinzufügen.

    Das Dialogfeld Neues Element hinzufügen wird angezeigt.

  5. Klicken Sie im Bereich "Vorlagen " auf "Klasse".

    Der Standarddateiname, Class1.vbwird im Feld "Name " angezeigt. Ändern Sie dieses Feld in MathClass.vb, und klicken Sie auf "Hinzufügen". Dadurch wird eine Klasse mit dem Namen MathClasserstellt und ihr Code angezeigt.

  6. Fügen Sie den folgenden Code oben zum MathClass hinzu, um von der COM-Klasse zu erben.

    ' The inherited class is called MathFunctions in the base class,
    ' but the interop assembly appends the word Class to the name.
    Inherits ComObject1.MathFunctionsClass
    
  7. Überladen Sie die öffentliche Methode der Basisklasse, indem Sie den folgenden Code hinzufügen:MathClass

    '  This method overloads the method AddNumbers from the base class.
    Overloads Function AddNumbers(
        ByVal SomeNumber As Integer,
        ByVal AnotherNumber As Integer) As Integer
    
        Return SomeNumber + AnotherNumber
    End Function
    
  8. Erweitern Sie die geerbte Klasse, indem Sie den folgenden Code hinzufügen:MathClass

    '  The following function extends the inherited class.
    Function SubtractNumbers(
        ByVal SomeNumber As Integer,
        ByVal AnotherNumber As Integer) As Integer
    
        Return AnotherNumber - SomeNumber
    End Function
    

Die neue Klasse erbt die Eigenschaften der Basisklasse im COM-Objekt, überladen eine Methode und definiert eine neue Methode zum Erweitern der Klasse.

Die vererbte Klasse testen

  1. Fügen Sie dem Startformular eine Schaltfläche hinzu, und doppelklicken Sie dann darauf, um den Code anzuzeigen.

  2. Fügen Sie in der Ereignishandlerprozedur der Schaltfläche Click den folgenden Code hinzu, um eine Instanz von MathClass methoden zu erstellen und die überladenen Methoden aufzurufen:

    Dim Result1 As Short
    Dim Result2 As Integer
    Dim Result3 As Integer
    Dim MathObject As New MathClass
    Result1 = MathObject.AddNumbers(4S, 2S) ' Add two Shorts.
    Result2 = MathObject.AddNumbers(4, 2) 'Add two Integers.
    Result3 = MathObject.SubtractNumbers(2, 4) ' Subtract 2 from 4.
    MathObject.Prop1 = 6 ' Set an inherited property.
    
    MsgBox("Calling the AddNumbers method in the base class " &
           "using Short type numbers 4 and 2 = " & Result1)
    MsgBox("Calling the overloaded AddNumbers method using " &
           "Integer type numbers 4 and 2 = " & Result2)
    MsgBox("Calling the SubtractNumbers method " &
           "subtracting 2 from 4 = " & Result3)
    MsgBox("The value of the inherited property is " &
            MathObject.Prop1)
    
  3. Führen Sie das Projekt aus, indem Sie F5 drücken.

Wenn Sie auf die Schaltfläche im Formular klicken, wird die AddNumbers Methode zuerst mit Short Datentypnummern aufgerufen, und Visual Basic wählt die entsprechende Methode aus der Basisklasse aus. Der zweite Aufruf von AddNumbers wird an die Überladungsmethode aus MathClass weitergeleitet. Der dritte Aufruf ruft die SubtractNumbers Methode auf, die die Klasse erweitert. Die Eigenschaft in der Basisklasse wird festgelegt, und der Wert wird angezeigt.

Nächste Schritte

Möglicherweise haben Sie bemerkt, dass die überladene AddNumbers Funktion denselben Datentyp aufweist wie die Methode, die von der Basisklasse des COM-Objekts geerbt wurde. Dies liegt daran, dass die Argumente und Parameter der Basisklassenmethode in Visual Basic 6.0 als 16-Bit-Ganzzahlen definiert werden, aber sie werden in späteren Versionen von Visual Basic als 16-Bit-Ganzzahlen des Typs Short verfügbar gemacht. Die neue Funktion akzeptiert 32-Bit-Ganzzahlen und überlastet die Basisklassenfunktion.

Stellen Sie beim Arbeiten mit COM-Objekten sicher, dass Sie die Größe und datentypen von Parametern überprüfen. Wenn Sie beispielsweise ein COM-Objekt verwenden, das ein Visual Basic 6.0-Auflistungsobjekt als Argument akzeptiert, können Sie keine Auflistung aus einer späteren Version von Visual Basic bereitstellen.

Eigenschaften und Methoden, die von COM-Klassen geerbt werden, können überschrieben werden, was bedeutet, dass Sie eine lokale Eigenschaft oder Methode deklarieren können, die eine Eigenschaft oder Methode ersetzt, die von einer COM-Basisklasse geerbt wird. Die Regeln für das Überschreiben geerbter COM-Eigenschaften ähneln den Regeln zum Überschreiben anderer Eigenschaften und Methoden mit den folgenden Ausnahmen:

  • Wenn Sie eine Eigenschaft oder Methode außer Kraft setzen, die von einer COM-Klasse geerbt wurde, müssen Sie alle anderen geerbten Eigenschaften und Methoden außer Kraft setzen.

  • Eigenschaften, die ByRef Parameter verwenden, können nicht überschrieben werden.

Siehe auch