Částečné metody (Visual Basic)
Částečné metody umožňují vývojářům vložit vlastní logiku do kódu. Kód je obvykle součástí třídy generované návrhářem. Částečné metody jsou definovány v částečné třídě vytvořené generátorem kódu a běžně se používají k poskytování oznámení, že se něco změnilo. Vývojáři umožňují určit vlastní chování v reakci na změnu.
Návrhář generátoru kódu definuje pouze podpis metody a jedno nebo více volání metody. Vývojáři pak mohou poskytnout implementace metody, pokud chtějí přizpůsobit chování vygenerovaného kódu. Pokud není k dispozici žádná implementace, volání metody se odeberou kompilátorem, což vede k žádným dodatečným režijním nákladům na výkon.
Deklarace
Vygenerovaný kód označuje definici částečné metody umístěním klíčového slova Partial
na začátek řádku podpisu.
Partial Private Sub QuantityChanged()
End Sub
Definice musí splňovat následující podmínky:
Metoda musí být ,
Sub
nikoliFunction
.Tělo metody musí být ponecháno prázdné.
Modifikátor přístupu musí být
Private
.
Implementace
Implementace se skládá především z vyplnění těla částečné metody. Implementace je obvykle v samostatné částečné třídě od definice a je napsána vývojářem, který chce rozšířit vygenerovaný kód.
Private Sub QuantityChanged()
' Code for executing the desired action.
End Sub
Předchozí příklad duplikuje podpis v deklaraci přesně, ale varianty jsou možné. Zejména mohou být přidány další modifikátory, například Overloads
nebo Overrides
. Je povolen pouze jeden Overrides
modifikátor. Další informace o modifikátorech metody naleznete v části Sub Statement.
Používání
Částečnou metodu zavoláte tak, jak byste volali jakoukoli jinou Sub
proceduru. Pokud byla metoda implementována, argumenty jsou vyhodnoceny a tělo metody se provede. Mějte však na paměti, že implementace částečné metody je volitelná. Pokud metoda není implementována, volání nemá žádný účinek a výrazy předané jako argumenty metody nejsou vyhodnoceny.
Příklad
V souboru s názvem Product.Designer.vb definujte Product
třídu, která má Quantity
vlastnost.
Partial Class Product
Private _Quantity As Integer
Property Quantity() As Integer
Get
Return _Quantity
End Get
Set(ByVal value As Integer)
_Quantity = value
QuantityChanged()
End Set
End Property
' Provide a signature for the partial method.
Partial Private Sub QuantityChanged()
End Sub
End Class
V souboru s názvem Product.vb zadejte implementaci pro QuantityChanged
.
Partial Class Product
Private Sub QuantityChanged()
MsgBox("Quantity was changed to " & Me.Quantity)
End Sub
End Class
Nakonec v metodě Main projektu deklarujte Product
instanci a zadejte počáteční hodnotu pro jeho Quantity
vlastnost.
Module Module1
Sub Main()
Dim product1 As New Product With {.Quantity = 100}
End Sub
End Module
Mělo by se zobrazit okno se zprávou, které zobrazí tuto zprávu:
Quantity was changed to 100