Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Visual Basic-osztályokat COM-objektumok osztályaiból Public is származtathatja, még a Visual Basic korábbi verzióiban létrehozott osztályokból is. A COM-objektumoktól örökölt osztályok tulajdonságai és metódusai felülbírálhatók vagy túlterhelhetők, ahogyan bármely más alaposztály tulajdonságai és metódusai felülbírálhatók vagy túlterhelhetők. A COM-objektumok öröklése akkor hasznos, ha olyan meglévő osztálykönyvtára van, amelyet nem szeretne újrafordíteni.
Az alábbi eljárás bemutatja, hogyan hozhat létre egy osztályt tartalmazó COM-objektumot a Visual Basic 6.0 használatával, majd hogyan használhatja alaposztályként.
Megjegyzés:
Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a Visual Studio felhasználói felületének egyes elemeihez az alábbi utasításokban. Ezeket az elemeket a Visual Studio-kiadás és a használt beállítások határozzák meg. További információért lásd: A fejlesztői környezet személyre szabása.
Az útmutatóban használt COM-objektum létrehozása
A Visual Basic 6.0-ban nyisson meg egy új ActiveX DLL-projektet. Létrejön egy nevesített
Project1projekt. Van egy osztály neveClass1.A Project Explorerben kattintson a jobb gombbal a Project1, majd a Project1 Tulajdonságok parancsra. Megjelenik a Projekt tulajdonságai párbeszédpanel.
A Projekt tulajdonságai párbeszédpanel Általános lapján módosítsa a projekt nevét a
ComObject1mező beírásával.A Project Explorerben kattintson
Class1a jobb gombbal, majd kattintson a Tulajdonságok parancsra. Megjelenik az osztály Tulajdonságok ablaka.Módosítsa a
NametulajdonságotMathFunctions-re.A Project Explorerben kattintson
MathFunctionsa jobb gombbal, majd kattintson a Kód megtekintése parancsra. Megjelenik a Kódszerkesztő .Adjon hozzá egy helyi változót a tulajdonság értékének tárolásához:
' Local variable to hold property value Private mvarProp1 As IntegerTulajdonság
Letés tulajdonságeljárásGethozzáadása: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 PropertyFüggvény hozzáadása:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End FunctionHozza létre és regisztrálja a COM-objektumot a Fájl menü Make ComObject1.dll parancsával.
Megjegyzés:
Bár a Visual Basic használatával létrehozott osztályt COM-objektumként is elérhetővé teheti, ez nem valódi COM-objektum, és ebben az útmutatóban nem használható. További részletekért lásd: COM-együttműködés a .NET-keretrendszeralkalmazásokban.
Interop összeállítások
Az alábbi eljárás során létrehoz egy interop szerelvényt, amely hidat képez a nem felügyelt kód (például egy COM-objektum) és a Visual Studio által használt felügyelt kód között. A Visual Basic által létrehozott interop-szerelvény kezeli a COM-objektumok kezelésének számos részletét, például az interop-rendezést, a paraméterek csomagolásának folyamatát, valamint az értékeket a COM-objektumokra való áttéréskor és onnan való áthelyezéskor egyenértékű adattípusokba. A Visual Basic alkalmazás hivatkozása az interop szerelvényre mutat, nem pedig a tényleges COM-objektumra.
COM-objektum használata Visual Basic 2005 és újabb verzióval
Nyisson meg egy új Visual Basic Windows-alkalmazásprojektet.
A Projekt menüben kattintson a Hivatkozás hozzáadásalehetőségre.
Megjelenik a Hivatkozás hozzáadása párbeszédpanel.
A COM lapon kattintson
ComObject1duplán az Összetevő neve listában, és kattintson az OK gombra.A Project menüben kattintson az Új elem hozzáadásaopcióra.
Megjelenik az Új elem hozzáadása párbeszédpanel.
A Sablonok panelen kattintson az Osztály elemre.
Az alapértelmezett fájlnév
Class1.vba Név mezőben jelenik meg. Módosítsa ezt a mezőt MathClass.vb, majd kattintson a Hozzáadás gombra. Ez létrehoz egy osztályt,MathClassés megjeleníti annak kódját.Adja hozzá a következő kódot
MathClasstetejére a COM-osztályból való örökléshez.' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClassTúlterhelje az alaposztály nyilvános metódusát a következő kód
MathClasshozzáadásával:' 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 FunctionAz örökölt osztály kiterjesztése a következő kód
MathClasshozzáadásával:' The following function extends the inherited class. Function SubtractNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer Return AnotherNumber - SomeNumber End Function
Az új osztály örökli az alaposztály tulajdonságait a COM objektumban, túlterhel egy metódust, és meghatároz egy új metódust az osztály kiterjesztéséhez.
Az örökölt osztály tesztelése
Adjon hozzá egy gombot az indítási űrlaphoz, majd kattintson rá duplán a kód megtekintéséhez.
A gomb eseménykezelő eljárásában
Clickadja hozzá a következő kódot a túlterhelt metódusok példányánakMathClasslétrehozásához és meghívásához: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)Futtassa a projektet az F5 billentyű lenyomásával.
Amikor az űrlap gombra kattint, a AddNumbers metódus először adattípus-számokkal Short lesz meghívva, a Visual Basic pedig az alaposztályból választja ki a megfelelő metódust. A második hívás a AddNumbers túlterhelési metódushoz lesz irányítva.MathClass A harmadik hívás meghívja a SubtractNumbers metódust, amely kibővíti az osztályt. Az alaposztály tulajdonsága be van állítva, és megjelenik az érték.
Következő lépések
Észrevehette, hogy a túlterhelt AddNumbers függvény adattípusa megegyezik a COM-objektum alaposztályától örökölt metódussal. Ennek az az oka, hogy az alaposztály-metódus argumentumai és paraméterei 16 bites egész számokként vannak definiálva a Visual Basic 6.0-ban, de a Visual Basic későbbi verzióiban 16 bites egész számként Short jelennek meg. Az új függvény 32 bites egész számokat fogad el, és túlterheli az alaposztályfüggvényt.
COM-objektumok használatakor győződjön meg arról, hogy ellenőrzi a paraméterek méretét és adattípusait. Ha például olyan COM-objektumot használ, amely argumentumként elfogad egy Visual Basic 6.0 gyűjteményobjektumot, nem adhat meg gyűjteményt a Visual Basic egy későbbi verziójából.
A COM-osztályoktól örökölt tulajdonságokat és metódusokat felül lehet bírálni, ami azt jelenti, hogy deklarálhat egy helyi tulajdonságot vagy metódust, amely egy alap COM-osztálytól örökölt tulajdonságot vagy metódust helyettesít. Az örökölt COM-tulajdonságok felülírására vonatkozó szabályok hasonlóak az egyéb tulajdonságok és metódusok felülírására vonatkozó szabályokhoz az alábbi kivételekkel:
Ha egy COM-osztálytól örökölt tulajdonságot vagy metódust felülbírál, felül kell bírálnia az összes többi örökölt tulajdonságot és metódust.
A paramétereket használó
ByReftulajdonságok nem bírálhatók felül.