Udostępnij za pośrednictwem


Wskazówki: wdrażanie dziedziczenia z obiektami COM (Visual Basic)

Można czerpać klas języka Visual Basic z Public klas obiektów COM, nawet tych, które utworzono w starszych wersjach Visual Basic.Właściwości i metody klasy dziedziczone z obiektami COM może być zastąpiona lub przeciążony, podobnie jak właściwości i metod inne klasy podstawowej może być zastąpiona lub przeciążony.Dziedziczenie obiektów COM jest przydatne, gdy istniejące Biblioteka klas, że nie chcesz ponownie skompilować.

Poniższa procedura pokazuje, jak utworzyć obiektu COM, który zawiera klasy za pomocą programu Visual Basic 6.0, a następnie użyć jej jako klasa podstawowa.

[!UWAGA]

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Tworzenie obiektu COM, który jest używany w tym instruktażu

  1. W programie Visual Basic 6.0 należy otworzyć nowy projekt ActiveX DLL.Projekt o nazwie Project1 jest tworzony.Posiada klasę o nazwie Class1.

  2. W Eksplorator projektu, kliknij prawym przyciskiem myszy Project1, a następnie kliknij przycisk Właściwości Project1.Właściwości projektu jest wyświetlane okno dialogowe.

  3. Na Ogólne na karcie Właściwości projektu okna dialogowego pole, należy zmienić nazwę projektu, wpisując ComObject1 w Nazwę projektu pola.

  4. W Eksplorator projektu, kliknij prawym przyciskiem myszy Class1, a następnie kliknij przycisk Właściwości.Właściwości zostanie wyświetlone okno dla tej klasy.

  5. Zmiana Name właściwość, aby MathFunctions.

  6. W Eksplorator projektu, kliknij prawym przyciskiem myszy MathFunctions, a następnie kliknij przycisk Widok Kod.Edytor kodu jest wyświetlany.

  7. Dodawanie zmiennej lokalnej do przechowywania wartości właściwości:

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Dodaj właściwość Let i właściwość Get właściwość procedury:

    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. Dodawanie funkcji:

    Function AddNumbers( 
       ByVal SomeNumber As Integer, 
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Utworzyć i zarejestrować obiektu COM, klikając Należy ComObject1.dll na pliku menu.

    [!UWAGA]

    Chociaż można także narazić utworzone za pomocą klasy Visual Basic jako obiekt COM nie jest spełniony obiektu COM i nie można używać w tym instruktażu.Aby uzyskać szczegółowe informacje, zobacz Współdziałanie COM w aplikacjach .NET Framework (Visual Basic).

Zestawy międzyoperacyjne

W poniższej procedurze zostanie utworzony zestaw współdziałania, który pełni rolę mostu między niezarządzanego kodu (takich jak obiekt COM) i kod zarządzany Visual Studio używa.Zestawu międzyoperacyjnego, Visual Basic tworzy obsługuje wiele szczegóły dotyczące pracy z COM obiektów, takich jak kierowanie współdziałania z modelem, proces pakowania parametry i wartości zwracane dane równoważne typy przesuwania do i z obiektami COM.Odniesienia w Visual Basic punkty aplikacji do zestawu międzyoperacyjnego, a nie rzeczywiste obiektu COM.

Aby użyć obiektu COM z języka Visual Basic 2005 i nowszych wersjach

  1. Otwórz nowy Visual Basic projekt aplikacji systemu Windows.

  2. Na Projekt menu, kliknij przycisk Dodaj odwołanie.

    Dodaj odwołanie jest wyświetlane okno dialogowe.

  3. Na COM kartę, kliknij dwukrotnie ComObject1 w Nazwa składnika listy i kliknij przycisk OK.

  4. Na Projekt menu, kliknij przycisk Dodaj nowy element.

    Dodaj nowy element jest wyświetlane okno dialogowe.

  5. W szablonów okienka, kliknij klasy.

    Domyślna nazwa pliku Class1.vb, pojawia się w Nazwa pola.W tym polu można zmienić na MathClass.vb i kliknij przycisk Dodaj.Tworzy klasę o nazwie MathClassi wyświetla jego kod.

  6. Dodaj następujący kod do góry MathClass do dziedziczą z klasy 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. Przeciążenie publicznych metoda klasy bazowej, dodając następujący kod 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. Rozszerzenie klasy dziedziczone przez dodanie następujący kod 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
    

Nowa klasa dziedziczy właściwości w obiekcie COM klasy podstawowej, overloads metodę i definiuje nową metodę rozszerzania klasy.

Aby przetestować dziedziczonej klasie.

  1. Dodawanie przycisku do formularza Autostart, a następnie kliknij dwukrotnie go, aby obejrzeć jego kod.

  2. Przycisk Click procedurę obsługi zdarzenia, Dodaj następujący kod do utworzenia wystąpienia MathClass i wywołania metody przeciążane:

    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. Uruchom projekt, naciskając klawisz F5.

Po kliknięciu przycisku na formularzu, AddNumbers z najpierw wywoływana jest metoda Short numery, typ danych i Visual Basic wybiera odpowiednie metody z klasy bazowej.Drugie wywołanie AddNumbers jest skierowane do przeciążenia metody z MathClass.Trzeci wywołanie wywołania SubtractNumbers metodę, która rozszerza klasę.Ustawiono właściwość w klasie bazowej i wyświetlana jest wartość.

Następne kroki

Być może zauważyłeś, przeciążone AddNumbers funkcji wydaje się mieć dane tego samego typu jak metoda dziedziczona z klasy bazowej obiektu COM.To dlatego, argumenty i parametry metody klasy podstawowej są zdefiniowane jako 16-bitowe liczby całkowite w języku Visual Basic 6.0, ale są one narażone jako 16-bitowe liczby całkowite typu Short w nowszych wersjach programu Visual Basic.Nowa funkcja akceptuje 32-bitowe liczby całkowite i overloads funkcji klasy podstawowej.

Podczas pracy z obiektami COM, upewnij się, że należy sprawdzić wielkość i dane typy parametrów.Na przykład podczas korzystania z obiektu COM, który akceptuje obiektu kolekcji Visual Basic 6.0 jako argument, nie może dostarczyć kolekcji z nowszej wersji programu Visual Basic.

Właściwości i metody dziedziczone z klas COM może być zastąpiona, co oznacza można zadeklarować lokalnych właściwości lub metody, która zastępuje właściwości lub dziedziczona z klasy bazowej COM.Zasady przesłanianie odziedziczone właściwości modelu COM są podobne do reguł do zastępowania innych właściwości i metody, z następującymi wyjątkami:

  • Można zastąpić wszelkich właściwości lub metody odziedziczonej z klasy COM, należy zastąpić wszystkich odziedziczonych właściwości i metod.

  • Właściwości, które używają ByRef parametrów nie mogą być przesłaniane.

Zobacz też

Informacje

Inherits — Instrukcja

Short — Typ danych (Visual Basic)

Inne zasoby

Współdziałanie COM w aplikacjach .NET Framework (Visual Basic)