Útmutató: Bővítménymetódus írása (Visual Basic)

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

  1. Nyisson meg egy új vagy meglévő Visual Basic-alkalmazást a Visual Studióban.

  2. 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.CompilerServices
    
  3. Az ú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 Extension attribútum csak a Visual Basic Sub egy metódusára (vagy Function eljárására) alkalmazható. Ha egy metódusra egy Class vagy egy Structure alkalmazza, a Visual Basic fordító a BC36551 hibát generálja: "A bővítménymetódusok csak modulokban határozhatók meg."

  4. 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!!!!

Lásd még