Partage via


Procédure pas à pas : implémentation de l'héritage avec les objets COM (Visual Basic)

Vous pouvez dériver des classes Visual Basic à partir de classes Public dans des objets COM, même celles créées dans les versions antérieures de Visual Basic. Les propriétés et les méthodes des classes héritées d’objets COM peuvent être remplacées ou surchargées, tout comme les propriétés et méthodes de toute autre classe de base peuvent être remplacées ou surchargées. L’héritage d’objets COM est utile lorsque vous disposez d’une bibliothèque de classes existante que vous ne souhaitez pas recompiler.

La procédure suivante montre comment utiliser Visual Basic 6.0 pour créer un objet COM qui contient une classe, puis l’utiliser comme classe de base.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnalisation de l’IDE.

Générer l’objet COM utilisé dans cette procédure pas à pas

  1. Dans Visual Basic 6.0, ouvrez un nouveau projet DLL ActiveX. Un projet nommé Project1 est créé. Il possède une classe nommée Class1.

  2. Dans l’Explorateur de projets, cliquez avec le bouton droit sur Project1, puis cliquez sur Propriétés de Project1. La boîte de dialogue Propriétés du projet s’affiche.

  3. Sous l’onglet Général de la boîte de dialogue Propriétés du projet, modifiez le nom du projet en tapant ComObject1 dans le champ Nom du projet.

  4. Dans l’Explorateur de projets, cliquez sur Class1 avec le bouton droit, puis cliquez sur Propriétés. La fenêtre Propriétés de la classe s’affiche.

  5. Remplacez la propriété Name par MathFunctions.

  6. Dans l’Explorateur de projets, cliquez sur MathFunctions avec le bouton droit, puis cliquez sur Afficher le code. L’Éditeur de code s’affiche.

  7. Ajoutez une variable locale pour contenir la valeur de la propriété :

    ' Local variable to hold property value
    Private mvarProp1 As Integer
    
  8. Ajoutez des procédures de propriété Let et de propriété 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. Ajoutez une fonction :

    Function AddNumbers(
       ByVal SomeNumber As Integer,
       ByVal AnotherNumber As Integer) As Integer
    
       AddNumbers = SomeNumber + AnotherNumber
    End Function
    
  10. Créez et inscrivez l’objet COM en cliquant sur Créer ComObject1.dll dans le menu Fichier.

    Notes

    Bien que vous puissiez également exposer une classe créée avec Visual Basic en tant qu’objet COM, elle n’est pas un véritable objet COM et ne peut pas être utilisée dans cette procédure pas à pas. Pour plus d’informations, consultez Interopérabilité COM dans les applications .NET Framework.

Assemblies d’interopérabilité

Dans la procédure suivante, vous allez créer un assembly d’interopérabilité, qui agit comme un pont entre le code non managé (tel qu’un objet COM) et le code managé utilisé par Visual Studio. L’assembly d’interopérabilité créé par Visual Basic gère la plupart des détails de l’utilisation d’objets COM, tels que le marshaling d’interopérabilité, le processus d’empaquetage des paramètres et les valeurs de retour en types de données équivalents au fur et à mesure qu’ils se déplacent vers et depuis des objets COM. La référence dans l’application Visual Basic pointe vers l’assembly d’interopérabilité, et non vers l’objet COM réel.

Utiliser un objet COM avec Visual Basic 2005 et versions ultérieures

  1. Ouvrez un nouveau projet d’application Windows Visual Basic.

  2. Dans le menu Projet, cliquez sur Ajouter une référence.

    La boîte de dialogue Ajouter une référence s’affiche.

  3. Sous l’onglet COM, double-cliquez sur ComObject1 dans la liste Nom du composant, puis cliquez sur OK.

  4. Dans le menu Projet , cliquez sur Ajouter un nouvel élément.

    La boîte de dialogue Ajouter un nouvel élément s’affiche.

  5. Dans le volet Modèles, cliquez sur Classe.

    Le nom de fichier par défaut, Class1.vb, s’affiche dans le champ Nom. Remplacez ce champ par MathClass.vb, puis cliquez sur Ajouter. Cela crée une classe nommée MathClass et affiche son code.

  6. Ajoutez le code suivant en haut de MathClass pour hériter de la classe 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. Surchargez la méthode publique de la classe de base en ajoutant le code suivant à 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. Étendez la classe héritée en ajoutant le code suivant à 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 nouvelle classe hérite des propriétés de la classe de base dans l’objet COM, surcharge une méthode et définit une nouvelle méthode pour étendre la classe.

Tester la classe héritée

  1. Ajoutez un bouton à votre start-up, puis double-cliquez dessus pour afficher son code.

  2. Dans la procédure du gestionnaire d’événements Click du bouton, ajoutez le code suivant pour créer une instance de MathClass et appeler les méthodes surchargées :

    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. Exécutez le projet en appuyant sur F5.

Lorsque vous cliquez sur le bouton sur le formulaire, la méthode AddNumbers est d’abord appelée avec des numéros de type de données Short, et Visual Basic choisit la méthode appropriée à partir de la classe de base. Le deuxième appel à AddNumbers est dirigé vers la méthode de surcharge à partir de MathClass. Le troisième appel appelle la méthode SubtractNumbers, qui étend la classe. La propriété de la classe de base est définie et la valeur est affichée.

Étapes suivantes

Vous avez peut-être remarqué que la fonction AddNumbers surchargée semble avoir le même type de données que la méthode héritée de la classe de base de l’objet COM. Cela est dû au fait que les arguments et les paramètres de la méthode de classe de base sont définis en tant qu’entiers 16 bits dans Visual Basic 6.0, mais qu’ils sont exposés sous forme d’entiers 16 bits de type Short dans les versions ultérieures de Visual Basic. La nouvelle fonction accepte des entiers 32 bits et surcharge la fonction de classe de base.

Lorsque vous utilisez des objets COM, assurez-vous de vérifier la taille et les types de données des paramètres. Par exemple, lorsque vous utilisez un objet COM qui accepte un objet de collection Visual Basic 6.0 comme argument, vous ne pouvez pas fournir une collection à partir d’une version ultérieure de Visual Basic.

Les propriétés et méthodes héritées des classes COM peuvent être remplacées, ce qui signifie que vous pouvez déclarer une propriété ou une méthode locale qui remplace une propriété ou une méthode héritée d’une classe COM de base. Les règles de remplacement des propriétés COM héritées sont similaires aux règles de remplacement d’autres propriétés et méthodes avec les exceptions suivantes :

  • Si vous remplacez une propriété ou une méthode héritée d’une classe COM, vous devez remplacer toutes les autres propriétés et méthodes héritées.

  • Les propriétés qui utilisent des paramètres ByRef ne peuvent pas être remplacées.

Voir aussi