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
Aprire un'applicazione Visual Basic nuova o esistente in Visual Studio.
Nella parte superiore del file in cui si vuole definire un metodo di estensione, includere l'istruzione di importazione seguente:
Imports System.Runtime.CompilerServices
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 (unaSub
oFunction
procedura) in un modulo di Visual Basic. Se lo si applica a un metodo in o in ,Class
Structure
il compilatore Visual Basic genera l'errore BC36551, "I metodi di estensione possono essere definiti solo nei moduli".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 , aString
nella definizione del metodo è associato a example
, l'istanza di String
che chiama il metodo . L'output dell'esempio è il seguente:
Hello?
Hello!!!!
Vedi anche
Commenti e suggerimenti
Invia e visualizza il feedback per