Compartir a través de


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

Los métodos de extensión permiten agregar métodos a una clase existente. Se puede llamar al método de extensión como si fuera una instancia de esa clase.

Para definir un método de extensión

  1. Abra una aplicación de Visual Basic nueva o existente en Visual Studio.

  2. En la parte superior del archivo en el que desea definir un método de extensión, incluya la siguiente instrucción import:

    Imports System.Runtime.CompilerServices
    
  3. Dentro de un módulo de la aplicación nueva o existente, comience la definición del método con el <Extension> atributo :

    <Extension()>
    

    Tenga en cuenta que el Extension atributo solo se puede aplicar a un método (un Sub procedimiento o Function ) en un módulo de Visual Basic. Si se aplica a un método de Class o Structure, el compilador de Visual Basic genera un error BC36551, "Los métodos de extensión solo se pueden definir en módulos".

  4. Declare el método de forma normal, salvo que el tipo del primer parámetro debe ser el tipo de datos que desea extender.

    <Extension()>
    Public Sub SubName(para1 As ExtendedType, <other parameters>)
         ' < Body of the method >
    End Sub
    

Ejemplo

En el ejemplo siguiente se declara un método de extensión en el módulo StringExtensions. Un segundo módulo, Module1, importa StringExtensions y llama al método . El método de extensión debe estar en el ámbito cuando se le llama. El método PrintAndPunctuate de extensión extiende la String clase con un método que muestra la instancia de cadena seguida de una cadena de símbolos de puntuación enviados como parámetro.

' 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

Observe que el método se define con dos parámetros y se llama solo con uno. El primer parámetro, , aStringen la definición del método está enlazado a example, la instancia de String que llama al método . La salida del ejemplo es la siguiente:

Hello?
Hello!!!!

Consulte también