Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Abra una aplicación de Visual Basic nueva o existente en Visual Studio.
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
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 (unSub
procedimiento oFunction
) en un módulo de Visual Basic. Si se aplica a un método deClass
oStructure
, el compilador de Visual Basic genera un error BC36551, "Los métodos de extensión solo se pueden definir en módulos".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, , aString
en 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!!!!