Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan härleda Visual Basic-klasser från Public klasser i COM-objekt, även de som skapats i tidigare versioner av Visual Basic. Egenskaperna och metoderna för klasser som ärvs från COM-objekt kan åsidosättas eller överbelastas på samma sätt som egenskaper och metoder för andra basklasser kan åsidosättas eller överbelastas. Arv från COM-objekt är användbart när du har ett befintligt klassbibliotek som du inte vill kompilera om.
Följande procedur visar hur du använder Visual Basic 6.0 för att skapa ett COM-objekt som innehåller en klass och sedan använda det som en basklass.
Anmärkning
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassning av utvecklingsmiljön.
Skapa COM-objektet som används i den här genomgången
Öppna ett nytt ActiveX DLL-projekt i Visual Basic 6.0. Ett projekt med namnet
Project1skapas. Den har en klass med namnetClass1.Högerklicka på Project1 i Projektutforskaren och klicka sedan på Project1-egenskaper. Dialogrutan Projektegenskaper visas.
På fliken Allmänt i dialogrutan Projektegenskaper ändrar du projektnamnet genom att
ComObject1skriva i fältet Projektnamn .Högerklicka i Projektutforskaren
Class1och klicka sedan på Egenskaper. Fönstret Egenskaper för klassen visas.Ändra egenskapen
NametillMathFunctions.Högerklicka i Projektutforskaren
MathFunctionsoch klicka sedan på Visa kod. Kodredigeraren är visad.Lägg till en lokal variabel för att lagra egenskapsvärdet:
' Local variable to hold property value Private mvarProp1 As IntegerLägg till procedurer för egenskap
LetochGet: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 PropertyLägg till en funktion:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End FunctionSkapa och registrera COM-objektet genom att klicka på Skapa ComObject1.dll på Arkiv-menyn .
Anmärkning
Även om du också kan exponera en klass som skapats med Visual Basic som ett COM-objekt, är det inte ett sant COM-objekt och kan inte användas i den här genomgången. Mer information finns i COM-samverkan i .NET Framework-program.
Interop-sammansättningar
I följande procedur skapar du en interop-sammansättning som fungerar som en brygga mellan ohanterad kod (till exempel ett COM-objekt) och den hanterade kod som Visual Studio använder. Interop-sammansättningen som Visual Basic skapar hanterar många av detaljerna i arbetet med COM-objekt, till exempel interop marshalling, processen med paketeringsparametrar och returvärden i motsvarande datatyper när de flyttas till och från COM-objekt. Referensen i Visual Basic-programmet pekar på interop-sammansättningen, inte det faktiska COM-objektet.
Så här använder du ett COM-objekt med Visual Basic 2005 och senare versioner
Öppna ett nytt Visual Basic Windows-programprojekt.
På menyn Project klickar du på Lägg till referens.
Dialogrutan Lägg till referens visas.
På fliken COM dubbelklickar du
ComObject1i listan Komponentnamn och klickar på OK.På menyn Project klickar du på Lägg till nytt objekt.
Dialogrutan Lägg till nytt objekt visas.
I fönstret Mallar klickar du på Klass.
Standardfilnamnet,
Class1.vb, visas i fältet Namn . Ändra det här fältet till MathClass.vb och klicka på Lägg till. Då skapas en klass med namnetMathClassoch dess kod visas.Lägg till följande kod överst
MathClassi för att ärva från COM-klassen.' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClassÖverbelasta den offentliga metoden för basklassen genom att lägga till följande kod i
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 FunctionUtöka den ärvda klassen genom att lägga till följande kod i
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
Den nya klassen ärver egenskaperna för basklassen i COM-objektet, överbelastar en metod och definierar en ny metod för att utöka klassen.
Att testa den ärvda klassen
Lägg till en knapp i startformuläret och dubbelklicka sedan på den för att visa koden.
I knappens
Clickhändelsehanterarprocedur lägger du till följande kod för att skapa en instans avMathClassoch anropa de överlagrade metoderna: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)Kör projektet genom att trycka på F5.
När du klickar på knappen i formuläret AddNumbers anropas metoden först med Short datatypsnummer och Visual Basic väljer lämplig metod från basklassen. Det andra anropet till AddNumbers dirigeras till överlagringsmetoden från MathClass. Det tredje anropet SubtractNumbers anropar metoden, som utökar klassen. Egenskapen i basklassen anges och värdet visas.
Nästa steg
Du kanske har märkt att den överlagrade AddNumbers funktionen verkar ha samma datatyp som metoden som ärvts från basklassen för COM-objektet. Det beror på att argumenten och parametrarna för basklassmetoden definieras som 16-bitars heltal i Visual Basic 6.0, men de exponeras som 16-bitars heltal av typen Short i senare versioner av Visual Basic. Den nya funktionen accepterar 32-bitars heltal och överbelastar basklassfunktionen.
När du arbetar med COM-objekt kontrollerar du parametrarnas storlek och datatyper. När du till exempel använder ett COM-objekt som accepterar ett Visual Basic 6.0-samlingsobjekt som argument kan du inte ange en samling från en senare version av Visual Basic.
Egenskaper och metoder som ärvs från COM-klasser kan åsidosättas, vilket innebär att du kan deklarera en lokal egenskap eller metod som ersätter en egenskap eller metod som ärvts från en bas-COM-klass. Reglerna för att åsidosätta ärvda COM-egenskaper liknar reglerna för att åsidosätta andra egenskaper och metoder med följande undantag:
Om du åsidosätter en egenskap eller metod som ärvts från en COM-klass måste du åsidosätta alla andra ärvda egenskaper och metoder.
Egenskaper som använder
ByRefparametrar kan inte åsidosättas.