Cómo: Llamar a un método de extensión (Visual Basic)

Los métodos de extensión permiten agregar métodos a una clase existente. Después de declarar un método de extensión y llevarlo al ámbito de aplicación, puede invocarlo como si fuera un método de instancia del tipo que extiende. Para obtener más información sobre cómo escribir un método de extensión, vea Cómo: Escribir un método de extensión.

Las instrucciones siguientes hacen referencia al método PrintAndPunctuatede extensión , que mostrará la instancia de cadena que la invoca, seguida de cualquier valor que se envíe en para el segundo parámetro, punc.

Imports System.Runtime.CompilerServices

Module StringExtensions
    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub

End Module

El método debe estar en el ámbito cuando se le llama.

Llamar a un método de extensión

  1. Declare una variable que tenga el tipo de datos del primer parámetro del método de extensión. Para PrintAndPunctuate, necesita una String variable:

    Dim example = "Ready"
    
  2. Esa variable invocará el método de extensión y su valor se enlaza al primer parámetro, aString. La siguiente instrucción de llamada mostrará Ready?.

    example.PrintAndPunctuate("?")
    

    Observe que la llamada a este método de extensión es similar a una llamada a cualquiera de los String métodos de instancia que requieren un parámetro:

    example.EndsWith("dy")
    example.IndexOf("R")
    
  3. Declare otra variable de cadena y vuelva a llamar al método para ver que funciona con cualquier cadena.

    Dim example2 = " or not"
    example2.PrintAndPunctuate("!!!")
    

    El resultado esta vez es: or not!!!.

Ejemplo

El código siguiente es un ejemplo completo de la creación y el uso de un método de extensión simple.

Imports System.Runtime.CompilerServices
Imports ConsoleApplication1.StringExtensions

Module Module1

    Sub Main()

        Dim example = "Hello"
        example.PrintAndPunctuate(".")
        example.PrintAndPunctuate("!!!!")

        Dim example2 = "Goodbye"
        example2.PrintAndPunctuate("?")
    End Sub

    <Extension()>
    Public Sub PrintAndPunctuate(ByVal aString As String,
                                 ByVal punc As String)
        Console.WriteLine(aString & punc)
    End Sub
End Module

' Output:
' Hello.
' Hello!!!!
' Goodbye?

Consulte también