Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

19.2. Partial Methods

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Vanaf Visual Basic 9.0 (2008) kunnen methods als Partial worden gedefinieerd.  Deze methods kunnen dan met implementatie aangevuld worden op een andere plaats binnen de klassedefinitie.

De Partial methods kunnen enkel Private Subs zijn zonder implementatie.
Visual Basic 2012 Broncode - Codevoorbeeld 440
Class SomeClass
    Partial Private Sub somePartialMethod1()
    End Sub
    Partial Private Sub somePartialMethod2()
    End Sub
    '
    Private Sub somePartialMethod1()                                       ' (1)
        Console.WriteLine("somePartialMethod1")
    End Sub
    '
    Public Sub TestSomePartialMethod1()
        somePartialMethod1()
    End Sub
    Public Sub TestSomePartialMethod2()
        somePartialMethod2()
    End Sub
End Class
Partial Class SomeClass
    Private Sub somePartialMethod2()                                       ' (2)
        Console.WriteLine("somePartialMethod2")
    End Sub
End Class
Class Example1
    Public Shared Sub Main()
        Dim someObject As New SomeClass
        someObject.TestSomePartialMethod1()
        someObject.TestSomePartialMethod2()
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
somePartialMethod1
somePartialMethod2
Enkel de implementatieloze methods worden gemarkeerd met het keyword Partial.  De aanvullende implementaties mogen dit keyword niet opnemen in hun signatuur.

Het is technisch gezien mogelijk om binnen dezelfde (partial) klassedefinitie - als waar de Partial method is gedefinieerd - de aanvullende implementatie te definiëren (1).
Toch zal doorgaans de aangevulde implementatie zich in een andere partial definitie van deze klasse bevinden (2).

De Partial methods worden vooral gebruikt in situatie waar men wil vermijden dat de code - gegenereerd door bepaalde codegeneratie - wordt aangepast.

Veronderstel dat onderstaande klasse Stock door een codegenerator werd gecreëerd.

Indien men het toe wil laten, de programmeur te laten bepalen wat er dient te gebeuren bij het instellen van de Price eigenschap.  Dan kan de generator nu Partial methods definiëren en aanroepen in de relevante setter.
Visual Basic 2012 Broncode - Codevoorbeeld 441
#Region "Some Generated Code"
Partial Class Stock
    Private _Price As Decimal
    Public Property Price() As Decimal
        Get
            Return _Price
        End Get
        Set(ByVal value As Decimal)
            onPriceChanging(value)
            _Price = value
            onPriceChanged()
        End Set
    End Property
    Partial Private Sub onPriceChanging(ByVal value As Decimal)
    End Sub
    Partial Private Sub onPriceChanged()
    End Sub
End Class
#End Region
Een programmeur die wil bepalen wat er moet gebeuren bij het instellen van de Price eigenschap heeft nu de mogelijkheid aanvullende implementaties te definiëren.
Visual Basic 2012 Broncode - Codevoorbeeld 442
Partial Class Stock
    Private Sub onPriceChanging(ByVal value As Decimal)
        Console.WriteLine("Doing something when the price is changing to " & _
                          value & ".")
    End Sub
    Private Sub onPriceChanged()
        Console.WriteLine("Doing something when the price changed.")
    End Sub
End Class
Class Example3
    Public Shared Sub Main()
        Dim stock1 As New Stock
        stock1.Price = 10
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
Doing something when the price is changing to 10.
Doing something when the price changed.
Om performantieredenen zal indien geen aanvullende implementatie is voorzien voor een Partial method, de compiler de call naar deze method negeren.
Visual Basic 2012 Broncode - Codevoorbeeld 443
Partial Class SomeClass
    Partial Private Sub somePartialMethod3()
    End Sub
    '
    Public Sub TestSomePartialMethod3()
        somePartialMethod3()                                               ' (1)
    End Sub
End Class
Class Example2
    Public Shared Sub Main()
        Dim someObject As New SomeClass
        someObject.TestSomePartialMethod3()
        '
        Console.ReadLine()
    End Sub
End Class
Zo zal in bovenstaand voorbeeld de call naar method somePartialMethod3 (1) door de compiler genegeerd worden.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.