Partager via


Guide pratique pour écrire une méthode d’extension (Visual Basic)

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

  1. Ouvrez une application Visual Basic nouvelle ou existante dans Visual Studio.

  2. En haut du fichier dans lequel vous souhaitez définir une méthode d’extension, incluez l’instruction import suivante :

    Imports System.Runtime.CompilerServices
    
  3. 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 (ou SubFunction une procédure) dans un module Visual Basic. Si vous l’appliquez à une méthode dans un Class ou un Structure, le compilateur Visual Basic génère une erreur BC36551, « Les méthodes d’extension ne peuvent être définies que dans les modules ».

  4. 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, Module1importe 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, aStringdans 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!!!!

Voir aussi