Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les méthodes d’extension vous permettent d’ajouter des méthodes à une classe existante. La méthode d’extension peut être appelée comme s’il s’agissait d’une instance de cette classe.
Pour définir une méthode d’extension
Ouvrez une application Visual Basic nouvelle ou existante dans Visual Studio.
En haut du fichier dans lequel vous souhaitez définir une méthode d’extension, incluez l’instruction import suivante :
Imports System.Runtime.CompilerServices
Dans un module de votre application nouvelle ou existante, commencez la définition de méthode avec l’attribut
<Extension>
:<Extension()>
Notez que l’attribut
Extension
ne peut être appliqué qu’à une méthode (ouSub
Function
une procédure) dans un module Visual Basic. Si vous l’appliquez à une méthode dans unClass
ou unStructure
, le compilateur Visual Basic génère une erreur BC36551, « Les méthodes d’extension ne peuvent être définies que dans les modules ».Déclarez votre méthode de la manière ordinaire, sauf que le type du premier paramètre doit être le type de données que vous souhaitez étendre.
<Extension()> Public Sub SubName(para1 As ExtendedType, <other parameters>) ' < Body of the method > End Sub
Exemple :
L’exemple suivant déclare une méthode d’extension dans le module StringExtensions
. Un deuxième module, Module1
importe StringExtensions
et appelle la méthode. La méthode d’extension doit être dans l’étendue lorsqu’elle est appelée. La méthode PrintAndPunctuate
d’extension étend la String classe avec une méthode qui affiche l’instance de chaîne suivie d’une chaîne de symboles de ponctuation envoyés en tant que paramètre.
' Declarations will typically be in a separate module.
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Sub PrintAndPunctuate(aString As String, punc As String)
Console.WriteLine(aString & punc)
End Sub
End Module
' Import the module that holds the extension method you want to use,
' and call it.
Imports ConsoleApplication2.StringExtensions
Module Module1
Sub Main()
Dim example = "Hello"
example.PrintAndPunctuate("?")
example.PrintAndPunctuate("!!!!")
End Sub
End Module
Notez que la méthode est définie avec deux paramètres et appelées avec un seul. Le premier paramètre, aString
dans la définition de méthode est lié à example
, l’instance de celle-ci String
appelle la méthode. La sortie de l’exemple est la suivante :
Hello?
Hello!!!!