Procédure pas à pas : implémentation de l'héritage avec les objets COM
Mise à jour : novembre 2007
Vous pouvez dériver des classes Visual Basic à partir de classes Public dans des objets COM, même les classes créées avec des versions antérieures de Visual Basic. Les propriétés et les méthodes des classes héritées d'objets COM peuvent être substituées ou surchargées comme les propriétés et les méthodes de toute autre classe de base. L'héritage à partir des objets COM est utile lorsque vous ne voulez pas recompiler une bibliothèque de classes existante.
La procédure suivante explique comment utiliser Visual Basic 6.0 pour créer un objet COM contenant une classe, puis comment l'utiliser comme classe de base.
Remarque : |
---|
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio 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 Paramètres Visual Studio. |
Pour générer l'objet COM utilisé dans cette procédure pas à pas
Dans Visual Basic 6.0, ouvrez un nouveau projet de DLL ActiveX. Un projet nommé Project1 est créé. Il a une classe nommée Class1.
Dans l'Explorateur de projets, cliquez avec le bouton droit sur Project1, puis cliquez sur Propriétés. La boîte de dialogue Propriétés du projet s'affiche.
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 de projet.
Dans l'Explorateur de projets, cliquez avec le bouton droit sur Class1, puis cliquez sur Propriétés. La fenêtre Propriétés de la classe s'affiche.
Affectez la valeur MathFunctions à la propriété Name.
Dans l'Explorateur de projets, cliquez avec le bouton droit sur MathFunctions, puis cliquez sur Afficher le code. L'éditeur de code s'affiche.
Ajoutez une variable locale pour contenir la valeur de propriété :
' Local variable to hold property value Private mvarProp1 As Integer
Ajoutez les procédures de propriété Property Let et Property 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
Ajoutez une fonction :
Function AddNumbers( _ ByVal SomeNumber As Integer, _ ByVal AnotherNumber As Integer) _ As Integer AddNumbers = SomeNumber + AnotherNumber End Function
Créez et inscrivez l'objet OM en cliquant sur Créer ComObject1.dll dans le menu Fichier.
Remarque : Bien que vous puissiez également exposer une classe créée avec Visual Basic comme un objet COM, il ne s'agit pas d'un objet COM réel et il ne peut pas être utilisé dans cette procédure pas à pas. Pour plus d'informations, consultez Interopérabilité COM dans les applications .NET Framework.
Assemblys d'interopérabilité
Dans la procédure suivante, vous créez un assembly d'interopérabilité qui sert de pont entre le code non managé (tel qu'un objet COM) et le code managé que Visual Studio utilise. L'assembly d'interopérabilité créé par Visual Basic gère de nombreux détails de l'utilisation d'objets COM, par exemple le marshaling d'interopérabilité, le processus qui consiste à empaqueter des paramètres et des valeurs de retour dans des types de données équivalents lors de leurs déplacements vers et à partir des objets COM. La référence de l'application Visual Basic pointe vers l'assembly d'interopérabilité et non vers l'objet COM réel.
Pour utiliser un objet COM avec Visual Basic 2005 et versions ultérieures
Ouvrez un nouveau projet d'application Windows Visual Basic.
Dans le menu Projet, cliquez sur Ajouter une référence.
La boîte de dialogue Ajouter une référence s'affiche.
Sous l'onglet COM, double-cliquez sur ComObject1 dans la liste Nom du composant et cliquez sur OK.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
La boîte de dialogue Ajouter un nouvel élément s'affiche.
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 et cliquez sur Ouvrir. Cela crée une classe nommée MathClass et affiche son code.
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
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
É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.
Pour tester la classe héritée
Ajoutez un bouton à votre formulaire de départ, puis double-cliquez dessus pour afficher son code.
Dans la procédure de 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)
Exécutez le projet en appuyant sur F5.
Lorsque vous cliquez sur le bouton du formulaire, la méthode AddNumbers est d'abord appelée avec des nombres de types de données Short et Visual Basic choisit la méthode appropriée à partir de la classe de base. Le second appel à AddNumbers est dirigé vers la méthode surchargée à partir de MathClass. Le troisième appel s'adresse à la méthode SubtractNumbers, qui étend la classe. La propriété de la classe de base est définie et la valeur s'affiche.
Étapes suivantes
Vous avez peut-être remarqué que la fonction surchargée AddNumbers semble posséder le même type de données que la méthode héritée à partir de la classe de base de l'objet COM. Ceci est dû au fait que les arguments et paramètres de la méthode de la classe de base sont définis comme des nombres entiers 16 bits dans Visual Basic 6.0, mais sont exposés comme des nombres entiers 16 bits de type Short dans les versions ultérieures de Visual Basic. La nouvelle fonction accepte les nombres entiers de 32 bits et surcharge la fonction de la classe de base.
Lorsque vous utilisez des objets COM, veillez à 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 en tant qu'argument, vous ne pouvez pas fournir de collection à partir d'une version ultérieure de Visual Basic. Pour plus d'informations sur les modifications du type de données, consultez Modifications du langage pour les utilisateurs de Visual Basic 6.0.
Les propriétés et les méthodes héritées des classes COM peuvent être substitué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 substitution des propriétés COM héritées sont similaires aux règles de substitution des autres propriétés et méthodes, à l'exception des cas suivants :
Si vous substituez une propriété ou une méthode héritée d'une classe COM, vous devez également 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 substituées.
Voir aussi
Tâches
Comment : créer des classes dérivées
Concepts
Substitution de propriétés et de méthodes
Référence
Short, type de données (Visual Basic)
Autres ressources
Interopérabilité COM dans les applications .NET Framework
Modifications du langage pour les utilisateurs de Visual Basic 6.0