Návod: Implementace dědičnosti s objekty modelu COM (Visual Basic)
Lze odvodit třídy jazyka Visual Basic z Public třídy COM objekty, tedy i ty, které jsou vytvořeny ve starších verzích Visual Basic.Vlastnosti a metody třídy zděděné z objektů COM můžete přepsat nebo přetížení stejně jako vlastnosti a metody jiné základní třídy můžete přepsat nebo přetížení.Dědičnost z objektů modelu COM je užitečné, pokud máte existující knihovny třídy, nechcete znovu zkompilujte.
Následující postup ukazuje vytvoření objektu COM, která obsahuje třídy pomocí jazyka Visual Basic 6.0, a použít jej jako základní třída.
[!POZNÁMKA]
Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.
Vytvoření objektu COM, který se používá v tomto
V jazyce Visual Basic 6.0 otevřete nový projekt ActiveX DLL.Projekt s názvem Project1 je vytvořen.Obsahuje třídu s názvem Class1.
V Project Explorer, klepněte pravým tlačítkem na Project1a klepněte na tlačítko Project1 Properties.Vlastnosti projektu zobrazí dialogové okno.
Na Obecné kartě Vlastnosti projektu dialogovém okně klepněte na název projektu změnit zadáním ComObject1 v Název projektu pole.
V Project Explorer, klepněte pravým tlačítkem na Class1a klepněte na tlačítko Vlastnosti.Vlastnosti pro třídu okna.
Změnit Name vlastnost MathFunctions.
V Project Explorer, klepněte pravým tlačítkem na MathFunctionsa klepněte na tlačítko Zobrazení kódu.Editor kódu je zobrazen.
Přidáte místní proměnné pro uložení hodnoty vlastnosti:
' Local variable to hold property value Private mvarProp1 As Integer
Přidání vlastnosti Let a Get vlastnost postupy:
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
Přidáte funkci:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End Function
Vytvořit a registrovat klepnutím na objekt COM ComObject1.dll provést na soubor nabídce.
[!POZNÁMKA]
Ačkoli můžete také vystavit vytvořené pomocí třídy Visual Basic jako objekt modelu COM není pravda objektu COM a nelze v tomto návodu.Další informace naleznete v tématu Interoperabilita modelů COM v aplikacích .NET Framework (Visual Basic).
Sestavení InterOp
V následujícím postupu vytvoříte sestavení interop, které slouží jako most mezi nespravovaný kód (například objekt modelu COM) a spravovaný kód Visual Studio používá.Sestavení interop, Visual Basic vytvoří zpracovává mnoho podrobností práci s COM objekty, jako například interop zařazování, typy procesu balení parametry a vrácené hodnoty do dat při jejich z objektů modelu COM a.Odkaz v Visual Basic aplikace odkazuje na sestavení interop není skutečný objekt COM.
Objekt COM pomocí jazyka Visual Basic 2005 a novější verze
Otevřený nový Visual Basic projekt pro aplikace Windows.
V nabídce Projekt klepněte na příkaz Přidat odkaz.
Zobrazí se dialogové okno Přidat odkaz.
Na COM karta, poklepejte na ComObject1 v Název součásti seznamu a klepněte na tlačítko OK.
V nabídce Projekt klikněte na příkaz Přidat novou položku.
Zobrazí se dialogové okno Přidat novou položku.
V šablony podokně, klepněte na tlačítko třídy.
Výchozí název souboru Class1.vb, se zobrazí v název pole.Toto pole změnit na MathClass.vb a na Přidat.Tím se vytvoří třídu pojmenovanou MathClassa zobrazí jeho kód.
Následující kód přidejte na začátek MathClass dědit ze třídy COM.
' The inherited class is called MathFunctions in the base class, ' but the interop assembly appends the word Class to the name. Inherits ComObject1.MathFunctionsClass
Přetěžování veřejné metody základní třídy přidáním následujícího kódu na 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
Zděděné třídy rozšířit přidáním následujícího kódu na 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
Nová třída dědí vlastnosti základní třídy objektu COM, přetížení metody a definuje nová metoda rozšíření třídy.
Testování zděděné třídy
Do spouštěcího formuláře přidat tlačítko a poklepejte na něj zobrazit jeho kód.
Na tlačítku Click postup obslužné rutiny událostí, přidejte následující kód na vytvoření instance MathClass a volání přetížené metody:
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)
Spuštění projektu stisknutím klávesy F5.
Po klepnutí na tlačítko ve formuláři AddNumbers s prvním volána metoda Short čísla, typ dat a Visual Basic odpovídající metodu zvolí ze základní třídy.Druhé volání AddNumbers je přesměrován do přetížení metody z MathClass.Třetí volání, volání SubtractNumbers metodu, která rozšiřuje třídu.Je-li nastavena vlastnost základní třídy a je zobrazena hodnota.
Další kroky
Jste si všimli, přetížené AddNumbers funkce se zobrazí mít stejný datový typ jako metoda zděděna ze základní třídy objektu COM.Důvodem je, že argumenty a parametry metody základní třídy, které jsou definovány jako celá čísla 16 bitů v jazyce Visual Basic 6.0, ale jsou vystaveny jako celá čísla 16-bit typu Short v novějších verzích jazyka Visual Basic.Nové funkce přijímá celá 32bitová čísla a přetížení funkce základní třídy.
Při práci s objekty COM, ujistěte se, že ověřit velikost a datové typy parametrů.Například při použití objektu COM, která přijímá objekt aplikace Visual Basic 6.0 kolekce jako argument nemůže poskytnout kolekce z novější verzi jazyka Visual Basic.
Vlastnosti a metody, které dědí z třídy COM, lze přepsat, což deklarovat místní vlastnost nebo metodu, která nahradí vlastnosti nebo zděděna ze základní třídy COM.Pravidla pro přepsání zděděné vlastnosti modelu COM jsou podobná pravidla pro potlačení jiné vlastnosti a metody s následujícími výjimkami:
Pokud je přepsat libovolné vlastnosti nebo metody zděděné z třídy COM, musí přepsat všechny ostatní zděděné vlastnosti a metody.
Vlastnosti, které používají ByRef parametry nemohou být potlačeny.
Viz také
Referenční dokumentace
Short – datový typ (Visual Basic)
Další zdroje
Interoperabilita modelů COM v aplikacích .NET Framework (Visual Basic)