Návod: Implementace dědičnosti s objekty modelu COM (Visual Basic)

třídy Visual Basic můžete odvodit ze Public tříd v objektech COM, a to i těch, které byly vytvořeny v dřívějších verzích Visual Basic. Vlastnosti a metody tříd zděděných z objektů COM mohou být přepsány nebo přetíženy stejně jako vlastnosti a metody jakékoli jiné základní třídy mohou být přepsány nebo přetíženy. Dědičnost z objektů modelu COM je užitečná v případě, že máte existující knihovnu tříd, kterou nechcete znovu kompilovat.

následující postup ukazuje, jak použít Visual Basic 6,0 k vytvoření objektu modelu COM, který obsahuje třídu, a jeho následné použití jako základní třídy.

Poznámka

Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Vytvoření objektu COM, který je použit v tomto návodu

  1. v Visual Basic 6,0 otevřete nový projekt technologie ActiveX knihovny DLL. Vytvoří se projekt s názvem Project1 . Obsahuje třídu s názvem Class1 .

  2. v průzkumníku Project klikněte pravým tlačítkem na Project1 a pak klikněte na vlastnosti Project1. zobrazí se dialogové okno Project vlastnosti .

  3. na kartě obecné v dialogovém okně vlastnosti Project změňte název projektu zadáním ComObject1 do pole Project název .

  4. v průzkumníku Project klikněte pravým tlačítkem myši Class1 a pak klikněte na vlastnosti. Zobrazí se okno vlastnosti třídy.

  5. Změňte Name vlastnost na MathFunctions .

  6. v průzkumníku Project klikněte pravým tlačítkem myši MathFunctions a pak klikněte na zobrazit kód. Zobrazí se Editor kódu .

  7. Přidejte místní proměnnou pro uchování hodnoty vlastnosti:

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Přidat procedury vlastností vlastností Let a vlastností Get :

    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
    
  9. Přidejte funkci:

    Function AddNumbers(
       ByVal SomeNumber As Integer,
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Vytvořte a zaregistrujte objekt COM kliknutím na tlačítko nastavit ComObject1.dll v nabídce soubor .

    Poznámka

    i když můžete vystavit třídu vytvořenou pomocí Visual Basic jako objekt modelu com, nejedná se o skutečný objekt com a nelze ji použít v tomto návodu. podrobnosti najdete v tématu interoperabilita modelu COM v aplikacích .NET Framework.

Definiční sestavení

v následujícím postupu vytvoříte definiční sestavení, které funguje jako most mezi nespravovaným kódem (například objektem COM) a spravovaným kódem Visual Studio používá. definiční sestavení, které Visual Basic vytvoří, zpracovává mnoho podrobností o práci s objekty com, jako je například interop marshaling, proces balení parametrů a návratové hodnoty do ekvivalentních datových typů při přesunu do a z objektů COM. odkaz v aplikaci Visual Basic odkazuje na definiční sestavení, nikoli na samotný objekt modelu COM.

použití objektu COM s Visual Basic 2005 a novějšími verzemi

  1. otevřete nový projekt aplikace Visual Basic Windows.

  2. v nabídce Project klikněte na možnost přidat odkaz.

    Zobrazí se dialogové okno Přidat odkaz .

  3. Na kartě com poklikejte na ComObject1 seznam název součásti a klikněte na OK.

  4. v nabídce Project klikněte na příkaz přidat novou položku.

    Zobrazí se dialogové okno Přidat novou položku.

  5. V podokně šablony klikněte na Třída.

    Výchozí název souboru se Class1.vb zobrazí v poli název . Změňte toto pole na MathClass. vb a klikněte na Přidat. Tím se vytvoří třída s názvem MathClass a zobrazí se její kód.

  6. Přidejte následující kód na začátek MathClass k dědění z 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
    
  7. Přetížení veřejné metody základní třídy přidáním následujícího kódu do 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
    
  8. Rozšíří zděděnou třídu přidáním následujícího kódu do 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 zdědí vlastnosti základní třídy v objektu COM, přetěžuje metodu a definuje novou metodu pro rozšiřování třídy.

Testování zděděné třídy

  1. Přidejte tlačítko do formuláře po spuštění a pak dvakrát klikněte na něj, aby se zobrazil jeho kód.

  2. V Click proceduře obslužné rutiny události tlačítka přidejte následující kód pro vytvoření instance MathClass a volání přetížených metod:

    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)
    
  3. Spusťte projekt stisknutím klávesy F5.

po kliknutí na tlačítko ve formuláři AddNumbers je metoda nejprve volána s Short čísly datového typu a Visual Basic zvolí vhodnou metodu ze základní třídy. Druhé volání na AddNumbers je přesměrováno na metodu přetížení z MathClass . Třetí volání volá SubtractNumbers metodu, která rozšiřuje třídu. Vlastnost v základní třídě je nastavena a zobrazí se hodnota.

Další kroky

Možná jste si všimli, že přetížená AddNumbers funkce má stejný datový typ jako metoda zděděná od základní třídy objektu com. důvodem je, že argumenty a parametry metody základní třídy jsou definovány jako 16bitová celá čísla v Visual Basic 6,0, ale jsou vystavena jako 16bitové celé číslo typu Short v pozdějších verzích Visual Basic. Nová funkce přijímá 32 celých čísel a přetěžuje funkci základní třídy.

Při práci s objekty modelu COM ověřte, zda je nutné ověřit velikost a datové typy parametrů. například při použití objektu COM, který přijímá objekt kolekce Visual Basic 6,0 jako argument, nelze poskytnout kolekci z novější verze Visual Basic.

Vlastnosti a metody zděděné z tříd modelu COM lze přepsat, což znamená, že lze deklarovat místní vlastnost nebo metodu, která nahrazuje vlastnost nebo metodu zděděnou ze základní třídy COM. Pravidla pro přepsání zděděných vlastností modelu COM jsou podobná pravidlům pro přepsání dalších vlastností a metod s následujícími výjimkami:

  • Pokud přepíšete jakoukoliv vlastnost nebo metodu děděnou z třídy modelu COM, je nutné přepsat všechny ostatní zděděné vlastnosti a metody.

  • Vlastnosti, které používají ByRef parametry, nelze přepsat.

Viz také