Útmutató: Öröklés megvalósítása COM-objektumokkal (Visual Basic)
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.
Feljegyzé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ó: Az IDE 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
Project1
projekt. 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 Projektnév mező beírásával
ComObject1
.A Project Explorerben kattintson a jobb gombbal, majd kattintson a Tulajdonságok parancsra.
Class1
Megjelenik az osztály Tulajdonságok ablaka.Módosítsa a tulajdonságot a
Name
következőreMathFunctions
: .A Project Explorerben kattintson
MathFunctions
a 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 Integer
Tulajdonság-
Let
és tulajdonságtulajdonság-eljárásokGet
hozzá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 Property
Függvény hozzáadása:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End Function
Hozza létre és regisztrálja a COM-objektumot a Fájl menü Make ComObject1.dll (Make ComObject1.dll) parancsára kattintva.
Feljegyzé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 .NET-keretrendszer alkalmazásokban.
Interop szerelvények
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 Project menüben kattintson a Hivatkozás hozzáadása elemre.
Megjelenik a Hivatkozás hozzáadása párbeszédpanel.
A COM lapon kattintson
ComObject1
duplán az Összetevő neve listában, és kattintson az OK gombra.A Projekt menüben kattintson az Új elem hozzáadása elemre.
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.vb
a 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 a lap tetejére
MathClass
, hogy örököljön a COM-osztályból.' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClass
Túlterhelje az alaposztály nyilvános metódusát a következő kód
MathClass
hozzá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 Function
Az örökölt osztály kiterjesztése a következő kód
MathClass
hozzá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
Click
adja hozzá a következő kódot a túlterhelt metódusok példányánakMathClass
lé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ó
ByRef
tulajdonságok nem bírálhatók felül.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: