Procedura: scrivere un metodo di estensione (Visual Basic)

I metodi di estensione consentono di aggiungere metodi a una classe esistente. Il metodo di estensione può essere chiamato come se fosse un'istanza di tale classe.

Per definire un metodo di estensione

  1. Aprire un'applicazione Visual Basic nuova o esistente in Visual Studio.

  2. Nella parte superiore del file in cui si vuole definire un metodo di estensione, includere l'istruzione di importazione seguente:

    Imports System.Runtime.CompilerServices
    
  3. All'interno di un modulo nell'applicazione nuova o esistente, iniziare la definizione del metodo con l'attributo <Extension> :

    <Extension()>
    

    Si noti che l'attributo Extension può essere applicato solo a un metodo (una Sub o Function procedura) in un modulo di Visual Basic. Se lo si applica a un metodo in o in , ClassStructureil compilatore Visual Basic genera l'errore BC36551, "I metodi di estensione possono essere definiti solo nei moduli".

  4. Dichiarare il metodo nel modo ordinario, ad eccezione del fatto che il tipo del primo parametro deve essere il tipo di dati da estendere.

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

Esempio

Nell'esempio seguente viene dichiarato un metodo di estensione nel modulo StringExtensions. Un secondo modulo, Module1, importa StringExtensions e chiama il metodo . Il metodo di estensione deve trovarsi nell'ambito quando viene chiamato. Il metodo extension estende la classe con un metodo PrintAndPunctuate che visualizza l'istanza String di stringa seguita da una stringa di simboli di punteggiatura inviati come parametro.

' 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

Si noti che il metodo è definito con due parametri e chiamato solo con uno. Il primo parametro , aStringnella definizione del metodo è associato a example, l'istanza di String che chiama il metodo . L'output dell'esempio è il seguente:

Hello?
Hello!!!!

Vedi anche