Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A bővítménymetelyek lehetővé teszik metódusok hozzáadását egy meglévő osztályhoz. A bővítménymetódus úgy hívható meg, mintha az adott osztály egy példánya lenne.
Bővítménymetódus definiálása
Nyisson meg egy új vagy meglévő Visual Basic-alkalmazást a Visual Studióban.
Annak a fájlnak a tetején, amelyben meg szeretne határozni egy bővítménymetódust, adja meg a következő importálási utasítást:
Imports System.Runtime.CompilerServicesAz új vagy meglévő alkalmazás egy moduljában kezdje el a metódusdefiníciót az
<Extension>attribútummal:<Extension()>Vegye figyelembe, hogy az
Extensionattribútum csak a Visual BasicSubegy metódusára (vagyFunctioneljárására) alkalmazható. Ha egy metódusra egyClassvagy egyStructurealkalmazza, a Visual Basic fordító a BC36551 hibát generálja: "A bővítménymetódusok csak modulokban határozhatók meg."A metódust a szokásos módon deklarálja, azzal a kivételével, hogy az első paraméter típusának a kiterjeszteni kívánt adattípusnak kell lennie.
<Extension()> Public Sub SubName(para1 As ExtendedType, <other parameters>) ' < Body of the method > End Sub
példa
Az alábbi példa egy bővítménymetódust deklarál a modulban StringExtensions. Egy másik modul, Module1, importálja StringExtensions és meghívja a metódust. A bővítési metódusnak hatókörben kell lennie, amikor meghívják. A bővítménymetódus PrintAndPunctuate kiterjeszti az String osztályt egy metódussal, amely megjeleníti a karakterlánc példányt, majd egy paraméterként átadott írásjelek karakterlánca követi.
' 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
Figyelje meg, hogy a metódus két paraméterrel van definiálva, és csak egytel van meghívva. A metódusdefiníció első paramétere aStringa metódust meghívó example példányhoz van kötveString. A példa kimenete a következő:
Hello?
Hello!!!!