Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
Ö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 NamenClass1
.Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf Project1, und klicken Sie dann auf Project1-Eigenschaften. Das Dialogfeld 'Projekteigenschaften' wird angezeigt.
Ändern Sie auf der Registerkarte "Allgemein" des Dialogfelds "Projekteigenschaften" den Projektnamen, indem Sie das Feld
ComObject1
" eingeben.Klicken Sie im Projekt-Explorer mit der rechten Maustaste
Class1
, und klicken Sie dann auf "Eigenschaften". Das Eigenschaftenfenster für die Klasse wird angezeigt.Ändern Sie die
Name
-Eigenschaft inMathFunctions
.Klicken Sie im Projekt-Explorer mit der rechten Maustaste
MathFunctions
, und klicken Sie dann auf "Code anzeigen". Der Code-Editor wird angezeigt.Fügen Sie eine lokale Variable für den Eigenschaftswert hinzu:
' Local variable to hold property value Private mvarProp1 As Integer
Fügen Sie Eigenschaftenprozeduren für die Eigenschaften
Let
undGet
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
Funktion hinzufügen:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End Function
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
Öffnen Sie ein neues Visual Basic Windows Application-Projekt.
Klicken Sie im Menü Project auf Verweis hinzufügen.
Das Dialogfeld "Verweis hinzufügen " wird angezeigt.
Doppelklicken Sie auf der Registerkarte COM in der Liste "
ComObject1
" auf , und klicken Sie auf OK.Klicken Sie im Menü Project auf Neues Element hinzufügen.
Das Dialogfeld Neues Element hinzufügen wird angezeigt.
Klicken Sie im Bereich "Vorlagen " auf "Klasse".
Der Standarddateiname,
Class1.vb
wird im Feld "Name " angezeigt. Ändern Sie dieses Feld in MathClass.vb, und klicken Sie auf "Hinzufügen". Dadurch wird eine Klasse mit dem NamenMathClass
erstellt und ihr Code angezeigt.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
Ü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
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
Fügen Sie dem Startformular eine Schaltfläche hinzu, und doppelklicken Sie dann darauf, um den Code anzuzeigen.
Fügen Sie in der Ereignishandlerprozedur der Schaltfläche
Click
den folgenden Code hinzu, um eine Instanz vonMathClass
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)
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.