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 e incluirlo en el ámbito, se le puede llamar como 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 (Visual Basic).

Las instrucciones siguientes hacen referencia al método de extensión PrintAndPunctuate, que mostrará la instancia de la cadena que lo invoca, seguida de cualquier valor que se envía 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 ámbito cuando se le llame.

Para 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 variable String:

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

    example.PrintAndPunctuate("?")
    

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

    example.EndsWith("dy")
    example.IndexOf("R")
    
  3. Declare otra variable de cadena y llame de nuevo al método para comprobar que funciona con cualquier cadena.

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

    Esta vez el resultado es: or not!!!.

Ejemplo

El código siguiente es un ejemplo completo de la creación y 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?

Vea también

Tareas

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

Conceptos

Métodos de extensión (Visual Basic)

Ámbito en Visual Basic