Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt Visual Basic-klassen afleiden uit Public klassen in COM-objecten, zelfs die zijn gemaakt in eerdere versies van Visual Basic. De eigenschappen en methoden van klassen die worden overgenomen van COM-objecten kunnen worden overschreven of overbelast, net zoals eigenschappen en methoden van elke andere basisklasse kunnen worden overschreven of overbelast. Overname van COM-objecten is handig wanneer u een bestaande klassebibliotheek hebt die u niet opnieuw wilt compileren.
In de volgende procedure ziet u hoe u Visual Basic 6.0 gebruikt om een COM-object te maken dat een klasse bevat en vervolgens als basisklasse te gebruiken.
Opmerking
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDEvoor meer informatie.
Om het COM-object te bouwen dat in deze stapsgewijze instructie wordt gebruikt
Open in Visual Basic 6.0 een nieuw ActiveX DLL-project. Er wordt een project met de naam
Project1gemaakt. Het heeft een klasse met de naamClass1.Klik in Projectverkenner met de rechtermuisknop op Project1 en klik vervolgens op Project1-eigenschappen. Het dialoogvenster Projecteigenschappen wordt weergegeven.
Wijzig op het tabblad Algemeen van het dialoogvenster Projecteigenschappen de projectnaam door het veld
ComObject1te typen.Klik in Projectverkenner met de rechtermuisknop
Class1en klik vervolgens op Eigenschappen. Het venster Eigenschappen voor de klasse wordt weergegeven.Wijzig de
Nameeigenschap inMathFunctions.Klik in Projectverkenner met de rechtermuisknop
MathFunctionsen klik vervolgens op Code weergeven. De code-editor wordt weergegeven.Voeg een lokale variabele toe om de eigenschapswaarde op te geven:
' Local variable to hold property value Private mvarProp1 As IntegerProcedures voor eigenschappen
Leten eigenschappenGettoevoegen: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 PropertyEen functie toevoegen:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End FunctionMaak en registreer het COM-object door te klikken op ComObject1.dll maken in het menu Bestand .
Opmerking
Hoewel u ook een klasse die is gemaakt met Visual Basic als com-object kunt weergeven, is het geen echt COM-object en kan deze niet worden gebruikt in dit scenario. Zie COM-interoperabiliteit in .NET Framework-toepassingen voor meer informatie.
Interop-assemblies
In de volgende procedure maakt u een interoperabiliteitsassembly, die fungeert als een brug tussen niet-beheerde code (zoals een COM-object) en de beheerde code die Visual Studio gebruikt. De interop-assembly die Visual Basic maakt, verwerkt veel van de details bij het werken met COM-objecten, zoals interop marshalling, het proces van het verpakken van parameters en het retourneren van waarden in gelijkwaardige gegevenstypen wanneer ze worden verplaatst naar en van COM-objecten. De verwijzing in de Visual Basic-toepassing verwijst naar de interop-assembly, niet naar het daadwerkelijke COM-object.
Een COM-object gebruiken met Visual Basic 2005 en nieuwere versies
Open een nieuw Visual Basic Windows-toepassingsproject.
Klik in het menu Project op Verwijzing toevoegen.
Het dialoogvenster Verwijzing toevoegen wordt weergegeven.
Dubbelklik in de lijst Componentnaam op
ComObject1op het tabblad COM en klik op OK.Klik in het menu Project op Nieuwe item toevoegen.
Het dialoogvenster Nieuw item toevoegen wordt weergegeven.
Klik in het deelvenster Sjablonen op Klasse.
De standaardbestandsnaam,
Class1.vbwordt weergegeven in het veld Naam . Wijzig dit veld in MathClass.vb en klik op Toevoegen. Hiermee maakt u een klasse met de naamMathClassen geeft u de bijbehorende code weer.Voeg de volgende code aan het begin van
MathClasstoe om te erven van de COM-klasse.' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClassOverbelast de openbare methode van de basisklasse door de volgende code toe te voegen aan
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 FunctionBreid de overgenomen klasse uit door de volgende code toe te voegen aan
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
De nieuwe klasse neemt de eigenschappen van de basisklasse in het COM-object over, overbelastt een methode en definieert een nieuwe methode om de klasse uit te breiden.
De geërfde klasse testen
Voeg een knop toe aan het opstartformulier en dubbelklik erop om de bijbehorende code weer te geven.
Voeg in de event-handlerprocedure van de knop
Clickde volgende code toe om een exemplaar vanMathClasste maken en de overbelaste methoden aan te roepen.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)Voer het project uit door op F5 te drukken.
Wanneer u op de knop in het formulier klikt, wordt de AddNumbers methode eerst aangeroepen met Short gegevenstypenummers en kiest Visual Basic de juiste methode uit de basisklasse. De tweede aanroep naar AddNumbers is gericht op de overload methode van MathClass. Met de derde aanroep wordt de SubtractNumbers methode aangeroepen, waarmee de klasse wordt uitgebreid. De eigenschap in de basisklasse is ingesteld en de waarde wordt weergegeven.
Volgende stappen
Mogelijk hebt u gemerkt dat de overbelaste AddNumbers functie hetzelfde gegevenstype heeft als de methode die is overgenomen van de basisklasse van het COM-object. Dit komt doordat de argumenten en parameters van de basisklassemethode zijn gedefinieerd als 16-bits gehele getallen in Visual Basic 6.0, maar ze worden weergegeven als 16-bits gehele getallen van het type Short in latere versies van Visual Basic. De nieuwe functie accepteert 32-bits gehele getallen en overbelastt de basisklassefunctie.
Zorg ervoor dat u bij het werken met COM-objecten de grootte en gegevenstypen van parameters controleert. Als u bijvoorbeeld een COM-object gebruikt dat een Visual Basic 6.0-verzamelingsobject accepteert als argument, kunt u geen verzameling opgeven uit een latere versie van Visual Basic.
Eigenschappen en methoden die worden overgenomen van COM-klassen kunnen worden overschreven. Dit betekent dat u een lokale eigenschap of methode kunt declareren die een eigenschap of methode vervangt die is overgenomen van een com-basisklasse. De regels voor het overschrijven van overgenomen COM-eigenschappen zijn vergelijkbaar met de regels voor het overschrijven van andere eigenschappen en methoden met de volgende uitzonderingen:
Als u een eigenschap of methode overschrijft die is overgenomen van een COM-klasse, moet u alle andere overgenomen eigenschappen en methoden overschrijven.
Eigenschappen die parameters gebruiken
ByRef, kunnen niet worden overschreven.