Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasy Języka Visual Basic można tworzyć na podstawie Public klas w obiektach COM, nawet tych utworzonych we wcześniejszych wersjach języka Visual Basic. Właściwości i metody klas dziedziczone z obiektów COM można zastąpić lub przeciążyć tak samo, jak właściwości i metody dowolnej innej klasy bazowej można zastąpić lub przeciążyć. Dziedziczenie z obiektów COM jest przydatne, gdy masz istniejącą bibliotekę klas, której nie chcesz ponownie kompilować.
Poniższa procedura pokazuje, jak utworzyć obiekt COM zawierający klasę przy użyciu języka Visual Basic 6.0, a następnie użyć go jako klasy bazowej.
Uwaga / Notatka
Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Aby skompilować obiekt COM, który jest używany w tym przewodniku
W programie Visual Basic 6.0 otwórz nowy projekt biblioteki DLL ActiveX. Zostanie utworzony projekt o nazwie
Project1. Ma klasę o nazwieClass1.W Eksploratorze projektów kliknij prawym przyciskiem myszy pozycję Project1, a następnie kliknij polecenie Właściwości projektu Project1. Zostanie wyświetlone okno dialogowe Właściwości projektu .
Na karcie Ogólne okna dialogowego Właściwości projektu zmień nazwę projektu, wpisując
ComObject1w polu Nazwa projektu .W Eksploratorze projektów kliknij prawym przyciskiem myszy pozycję
Class1, a następnie kliknij polecenie Właściwości. Zostanie wyświetlone okno Właściwości dla klasy.Zmień właściwość z
NamenaMathFunctions.W Eksploratorze projektów kliknij prawym przyciskiem myszy pozycję
MathFunctions, a następnie kliknij polecenie Wyświetl kod. Zostanie wyświetlony Edytor kodu .Dodaj zmienną lokalną do przechowywania wartości właściwości:
' Local variable to hold property value Private mvarProp1 As IntegerDodaj metody dostępu do właściwości
Leti właściwościGet.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 PropertyDodaj funkcję:
Function AddNumbers( ByVal SomeNumber As Integer, ByVal AnotherNumber As Integer) As Integer AddNumbers = SomeNumber + AnotherNumber End FunctionUtwórz i zarejestruj obiekt COM, klikając pozycję Utwórz ComObject1.dll w menu Plik .
Uwaga / Notatka
Mimo że można również uwidocznić klasę utworzoną za pomocą języka Visual Basic jako obiekt COM, nie jest to prawdziwy obiekt COM i nie można go użyć w tym przewodniku. Aby uzyskać szczegółowe informacje, zobacz Współdziałanie COM w aplikacjach .NET Framework.
Zestawy międzyoperacyjne
W poniższej procedurze utworzysz zestaw międzyoperacyjny, który działa jako mostek między kodem niezarządzanym (takim jak obiekt COM) a kodem zarządzanym używanym przez Visual Studio. Zestaw międzyoperacyjny tworzony w języku Visual Basic obsługuje wiele szczegółów pracy z obiektami COM, takich jak pakowanie w międzyoperacyjności, czyli proces pakowania parametrów i zwracania wartości do równoważnych typów danych, podczas przechodzenia do obiektów COM i z nich. Odwołanie w aplikacji Visual Basic wskazuje na bibliotekę międzyoperacyjną, a nie na rzeczywisty obiekt COM.
Aby użyć obiektu COM z Visual Basic 2005 i późniejszymi wersjami
Otwórz nowy projekt aplikacji systemu Windows w języku Visual Basic.
W menu projektu kliknij polecenie Dodaj referencję.
Zostanie wyświetlone okno dialogowe Dodawanie odwołania .
Na karcie COM kliknij
ComObject1dwukrotnie listę Nazwa składnika i kliknij przycisk OK.W menu projektu kliknij pozycję Dodaj nowy element.
Zostanie wyświetlone okno dialogowe Dodawanie nowego elementu .
W okienku Szablony kliknij pozycję Klasa.
Domyślna nazwa pliku,
Class1.vb, pojawia się w polu Nazwa . Zmień to pole na MathClass.vb i kliknij przycisk Dodaj. Spowoduje to utworzenie klasy o nazwieMathClassi wyświetlenie jego kodu.Dodaj następujący kod na początku
MathClasselementu , aby dziedziczyć 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.MathFunctionsClassPrzeciąż publiczną metodę 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 FunctionRozszerz dziedziczoną klasę, dodając 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 klasy bazowej w obiekcie COM, przeciąża metodę i definiuje nową metodę w celu rozszerzenia klasy.
Aby przetestować dziedziczoną klasę
Dodaj przycisk do formularza uruchamiania, a następnie kliknij go dwukrotnie, aby wyświetlić jego kod.
W procedurze obsługi zdarzeń przycisku
Clickdodaj następujący kod, aby utworzyć wystąpienie obiektuMathClassi wywołać przeciążone 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)Uruchom projekt, naciskając F5.
Po kliknięciu przycisku w formularzu AddNumbers metoda jest najpierw wywoływana przy użyciu Short liczb typów danych, a język Visual Basic wybiera odpowiednią metodę z klasy bazowej. Drugie wywołanie metody AddNumbers jest kierowane do metody przeciążonej z MathClass klasy. Trzecie wywołanie wywołuje metodę SubtractNumbers , która rozszerza klasę. Właściwość w klasie bazowej jest ustawiona, a wartość jest wyświetlana.
Dalsze kroki
Być może zauważysz, że przeciążona AddNumbers funkcja wydaje się mieć taki sam typ danych, jak metoda dziedziczona z klasy bazowej obiektu COM. Dzieje się tak, ponieważ argumenty i parametry metody klasy bazowej są definiowane jako 16-bitowe liczby całkowite w języku Visual Basic 6.0, ale są uwidocznione jako 16-bitowe liczby całkowite typu Short w nowszych wersjach programu Visual Basic. Nowa funkcja akceptuje 32-bitowe liczby całkowite i przeciąża funkcję klasy bazowej.
Podczas pracy z obiektami COM upewnij się, że sprawdzasz rozmiar i typy danych parametrów. Jeśli na przykład używasz obiektu COM, który akceptuje obiekt kolekcji Visual Basic 6.0 jako argument, nie można podać kolekcji z nowszej wersji języka Visual Basic.
Właściwości i metody dziedziczone z klas COM można zastąpić, co oznacza, że można zadeklarować lokalną właściwość lub metodę, która zastępuje właściwość lub metodę dziedziczone z klasy podstawowej COM. Reguły zastępowania odziedziczonych właściwości MODELU COM są podobne do reguł zastępowania innych właściwości i metod z następującymi wyjątkami:
Jeśli zastąpisz dowolną właściwość lub metodę dziedziczona z klasy COM, musisz zastąpić wszystkie pozostałe dziedziczone właściwości i metody.
Właściwości używające
ByRefparametrów nie mogą zostać zastąpione.