Partiella metoder (Visual Basic)
Med partiella metoder kan utvecklare infoga anpassad logik i kod. Vanligtvis är koden en del av en designergenererad klass. Partiella metoder definieras i en partiell klass som skapas av en kodgenerator, och de används ofta för att meddela att något har ändrats. De gör det möjligt för utvecklaren att ange anpassat beteende som svar på ändringen.
Designern av kodgeneratorn definierar endast metodsignaturen och ett eller flera anrop till metoden. Utvecklare kan sedan tillhandahålla implementeringar för metoden om de vill anpassa beteendet för den genererade koden. När ingen implementering tillhandahålls tas anrop till metoden bort av kompilatorn, vilket resulterar i ytterligare prestandakostnader.
Förklaring
Den genererade koden markerar definitionen av en partiell metod genom att placera nyckelordet Partial
i början av signaturraden.
Partial Private Sub QuantityChanged()
End Sub
Definitionen måste uppfylla följande villkor:
Metoden måste vara ,
Sub
inte enFunction
.Metodens brödtext måste lämnas tom.
Åtkomstmodifieraren måste vara
Private
.
Implementering
Implementeringen består främst av att fylla i brödtexten i den partiella metoden. Implementeringen är vanligtvis i en separat partiell klass från definitionen och skrivs av en utvecklare som vill utöka den genererade koden.
Private Sub QuantityChanged()
' Code for executing the desired action.
End Sub
I föregående exempel dupliceras signaturen i deklarationen exakt, men variationer är möjliga. I synnerhet kan andra modifierare läggas till, till exempel Overloads
eller Overrides
. Endast en Overrides
modifierare tillåts. Mer information om metodmodifierare finns i Underuttryck.
Använd
Du anropar en partiell metod eftersom du anropar andra Sub
procedurer. Om metoden har implementerats utvärderas argumenten och metodens brödtext körs. Kom dock ihåg att det är valfritt att implementera en partiell metod. Om metoden inte implementeras har ett anrop till den ingen effekt och uttryck som skickas som argument till metoden utvärderas inte.
Exempel
I en fil med namnet Product.Designer.vb definierar du en Product
klass som har en Quantity
egenskap.
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
I en fil med namnet Product.vb anger du en implementering för QuantityChanged
.
Partial Class Product
Private Sub QuantityChanged()
MsgBox("Quantity was changed to " & Me.Quantity)
End Sub
End Class
Slutligen deklarerar du en Product
instans i main-metoden för ett projekt och anger ett initialt värde för dess Quantity
egenskap.
Module Module1
Sub Main()
Dim product1 As New Product With {.Quantity = 100}
End Sub
End Module
En meddelanderuta ska visas som visar det här meddelandet:
Quantity was changed to 100