Procedura dettagliata: Implementazione dell'ereditarietà con gli oggetti COM (Visual Basic)Walkthrough: Implementing Inheritance with COM Objects (Visual Basic)

È possibile derivare classi Visual Basic da Public classi di oggetti COM, anche quelli creati in versioni precedenti di Visual Basic.You can derive Visual Basic classes from Public classes in COM objects, even those created in earlier versions of Visual Basic. Le proprietà e metodi delle classi ereditate dagli oggetti COM possono essere sottoposto a override o overload solo come proprietà e metodi di qualsiasi altra classe base possono essere sottoposto a override o overload.The properties and methods of classes inherited from COM objects can be overridden or overloaded just as properties and methods of any other base class can be overridden or overloaded. Ereditarietà dagli oggetti COM è utile quando si dispone di una libreria di classi esistenti che non si desidera ricompilare.Inheritance from COM objects is useful when you have an existing class library that you do not want to recompile.

La procedura seguente viene illustrato come utilizzare Visual Basic 6.0 per creare un oggetto COM che contiene una classe e quindi usarla come una classe di base.The following procedure shows how to use Visual Basic 6.0 to create a COM object that contains a class, and then use it as a base class.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

Per creare l'oggetto COM che viene usato in questa procedura dettagliataTo build the COM object that is used in this walkthrough

  1. In Visual Basic 6.0, aprire un nuovo progetto di DLL ActiveX.In Visual Basic 6.0, open a new ActiveX DLL project. Un progetto denominato Project1 viene creato.A project named Project1 is created. Dispone di una classe denominata Class1.It has a class named Class1.

  2. Nel Esplora progetti, fare doppio clic su Project1, quindi fare clic su Project1 proprietà.In the Project Explorer, right-click Project1, and then click Project1 Properties. Il proprietà del progetto verrà visualizzata la finestra di dialogo.The Project Properties dialog box is displayed.

  3. Nel generale scheda della finestra di le proprietà del progetto finestra di dialogo, modificare il nome del progetto digitando ComObject1 nel nome progetto campo.On the General tab of the Project Properties dialog box, change the project name by typing ComObject1 in the Project Name field.

  4. Nel Esplora progetti, fare doppio clic su Class1, quindi fare clic su proprietà.In the Project Explorer, right-click Class1, and then click Properties. Il proprietà viene visualizzata la finestra per la classe.The Properties window for the class is displayed.

  5. Modifica il Name proprietà MathFunctions.Change the Name property to MathFunctions.

  6. Nel Esplora progetti, fare doppio clic su MathFunctions, quindi fare clic su Visualizza codice.In the Project Explorer, right-click MathFunctions, and then click View Code. Il Editor di codice viene visualizzato.The Code Editor is displayed.

  7. Aggiungere una variabile locale per contenere il valore della proprietà:Add a local variable to hold the property value:

    ' Local variable to hold property value  
    Private mvarProp1 As Integer  
    
  8. Aggiungi proprietà Let e la proprietà Get routine delle proprietà:Add Property Let and Property Get property procedures:

    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. Aggiungere una funzione:Add a function:

    Function AddNumbers(   
       ByVal SomeNumber As Integer,   
       ByVal AnotherNumber As Integer) As Integer  
    
       AddNumbers = SomeNumber + AnotherNumber  
    End Function  
    
  10. Creare e registrare l'oggetto COM facendo Crea ComObject1. dll nel File menu.Create and register the COM object by clicking Make ComObject1.dll on the File menu.

    Nota

    Sebbene sia possibile esporre anche una classe creata con Visual Basic come oggetto COM, non è un vero oggetto COM e non può essere usato in questa procedura dettagliata.Although you can also expose a class created with Visual Basic as a COM object, it is not a true COM object and cannot be used in this walkthrough. Per informazioni dettagliate, vedere interoperabilità COM nelle applicazioni .NET Framework.For details, see COM Interoperability in .NET Framework Applications.

Assembly di interoperabilitàInterop Assemblies

Nella procedura seguente, si creerà un assembly di interoperabilità, che funge da ponte tra il codice non gestito (ad esempio, un oggetto COM) e il codice gestito che Usa Visual Studio.In the following procedure, you will create an interop assembly, which acts as a bridge between unmanaged code (such as a COM object) and the managed code Visual Studio uses. L'assembly di interoperabilità che Visual Basic crea gestisce molti dettagli dell'utilizzo di oggetti COM, ad esempio marshalling di interoperabilità, il processo di creazione dei pacchetti parametri e valori restituiti in dati equivalenti i tipi di esempio su cui spostarsi e dagli oggetti COM.The interop assembly that Visual Basic creates handles many of the details of working with COM objects, such as interop marshaling, the process of packaging parameters and return values into equivalent data types as they move to and from COM objects. Il riferimento nell'applicazione Visual Basic che punta all'assembly di interoperabilità, non l'oggetto COM effettivo.The reference in the Visual Basic application points to the interop assembly, not the actual COM object.

Usare un oggetto COM con Visual Basic 2005 e versioni successiveTo use a COM object with Visual Basic 2005 and later versions

  1. Aprire un nuovo progetto Applicazione Windows in Visual Basic.Open a new Visual Basic Windows Application project.

  2. Scegliere Aggiungi riferimento dal menu Progetto.On the Project menu, click Add Reference.

    Viene visualizzata la finestra di dialogo Aggiungi riferimento.The Add Reference dialog box is displayed.

  3. Nel COM scheda, fare doppio clic su ComObject1 nel nome componente elenco e fare clic su OK.On the COM tab, double-click ComObject1 in the Component Name list and click OK.

  4. Nel menu Progetto fare clic su Aggiungi nuovo elemento.On the Project menu, click Add New Item.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.The Add New Item dialog box is displayed.

  5. Nel modelli riquadro, fare clic su classe.In the Templates pane, click Class.

    Il nome file predefinito, Class1.vb, viene visualizzato nei nome campo.The default file name, Class1.vb, appears in the Name field. Modificare questo campo MathClass e fare clic su Add.Change this field to MathClass.vb and click Add. Verrà creata una classe denominata MathClasse verrà visualizzato il codice.This creates a class named MathClass, and displays its code.

  6. Aggiungere il codice seguente all'inizio del MathClass ereditare dalla classe COM.Add the following code to the top of MathClass to inherit from the COM class.

    ' 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. Overload del metodo pubblico della classe di base aggiungendo il codice seguente al MathClass:Overload the public method of the base class by adding the following code to 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. Estendere la classe ereditata aggiungendo il codice seguente al MathClass:Extend the inherited class by adding the following code to 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
    

La nuova classe eredita le proprietà della classe di base dell'oggetto COM, un metodo di overload e definisce un nuovo metodo per estendere la classe.The new class inherits the properties of the base class in the COM object, overloads a method, and defines a new method to extend the class.

Per eseguire il test sulla classe ereditataTo test the inherited class

  1. Aggiungere un pulsante al form di avvio e quindi fare doppio clic per visualizzare il codice.Add a button to your startup form, and then double-click it to view its code.

  2. Nel pulsante Click routine del gestore eventi, aggiungere il codice seguente per creare un'istanza di MathClass e chiamare i metodi di overload:In the button's Click event handler procedure, add the following code to create an instance of MathClass and call the overloaded methods:

    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. Eseguire il progetto premendo F5.Run the project by pressing F5.

Quando si fa clic sul pulsante nel form, il AddNumbers viene chiamato prima di tutto con Short numeri, tipo di dati e Visual Basic sceglie il metodo appropriato della classe base.When you click the button on the form, the AddNumbers method is first called with Short data type numbers, and Visual Basic chooses the appropriate method from the base class. La seconda chiamata a AddNumbers viene indirizzata al metodo di overload da MathClass.The second call to AddNumbers is directed to the overload method from MathClass. La terza chiamata richiama il SubtractNumbers metodo, che estende la classe.The third call calls the SubtractNumbers method, which extends the class. La proprietà nella classe di base è impostata e viene visualizzato il valore.The property in the base class is set, and the value is displayed.

Passaggi successiviNext Steps

È possibile aver notato che l'overload AddNumbers funzione sembra avere gli stessi dati di tipo del metodo ereditato dalla classe di base dell'oggetto COM.You may have noticed that the overloaded AddNumbers function appears to have the same data type as the method inherited from the base class of the COM object. Infatti, gli argomenti e parametri del metodo della classe base sono definiti come numeri interi a 16 bit in Visual Basic 6.0, ma sono esposte come interi a 16 bit di tipo Short nelle versioni più recenti di Visual Basic.This is because the arguments and parameters of the base class method are defined as 16-bit integers in Visual Basic 6.0, but they are exposed as 16-bit integers of type Short in later versions of Visual Basic. La nuova funzione accetta numeri interi a 32 bit e gli overload di funzione di classe base.The new function accepts 32-bit integers, and overloads the base class function.

Quando si usano oggetti COM, assicurarsi di verificare le dimensioni e tipi di dati dei parametri.When working with COM objects, make sure that you verify the size and data types of parameters. Ad esempio, quando si usa un oggetto COM che accetta come argomento un oggetto raccolta di Visual Basic 6.0, è possibile fornire un insieme di una versione successiva di Visual Basic.For example, when you are using a COM object that accepts a Visual Basic 6.0 collection object as an argument, you cannot provide a collection from a later version of Visual Basic.

Le proprietà e metodi ereditati da classi COM a cui possono essere sostituiti, vale a dire che è possibile dichiarare una proprietà locale o un metodo che sostituisce una proprietà o metodo ereditato da una classe COM di base.Properties and methods inherited from COM classes can be overridden, meaning that you can declare a local property or method that replaces a property or method inherited from a base COM class. Le regole per eseguire l'override delle proprietà ereditate COM sono simili alle regole per eseguire l'override di altre proprietà e metodi con le eccezioni seguenti:The rules for overriding inherited COM properties are similar to the rules for overriding other properties and methods with the following exceptions:

  • Se si esegue l'override di proprietà o metodi ereditati da una classe COM, è necessario eseguire l'override di tutte le altre proprietà ereditate e i metodi.If you override any property or method inherited from a COM class, you must override all the other inherited properties and methods.

  • Proprietà che utilizzano ByRef parametri non possono essere sottoposto a override.Properties that use ByRef parameters cannot be overridden.

Vedere ancheSee also