Metody częściowe (Visual Basic)

Metody częściowe umożliwiają deweloperom wstawianie niestandardowej logiki do kodu. Zazwyczaj kod jest częścią klasy generowanej przez projektanta. Metody częściowe są definiowane w klasie częściowej, która jest tworzona przez generator kodu, i są one często używane do dostarczania powiadomienia, że coś zostało zmienione. Umożliwiają deweloperowi określenie niestandardowego zachowania w odpowiedzi na zmianę.

Projektant generatora kodu definiuje tylko podpis metody i co najmniej jedno wywołanie metody do metody. Deweloperzy mogą następnie udostępniać implementacje metody, jeśli chcą dostosować zachowanie wygenerowanego kodu. Jeśli implementacja nie zostanie podana, wywołania metody są usuwane przez kompilator, co nie powoduje dodatkowego obciążenia związanego z wydajnością.

Deklaracji

Wygenerowany kod oznacza definicję metody częściowej, umieszczając słowo kluczowe Partial na początku wiersza podpisu.

Partial Private Sub QuantityChanged()  
End Sub  

Definicja musi spełniać następujące warunki:

  • Metoda musi być metodą Sub, a nie .Function

  • Treść metody musi być pozostawiona pusta.

  • Modyfikator dostępu musi mieć wartość Private.

Implementacja

Implementacja składa się głównie z wypełniania treści metody częściowej. Implementacja jest zwykle w oddzielnej klasie częściowej od definicji i jest napisana przez dewelopera, który chce rozszerzyć wygenerowany kod.

Private Sub QuantityChanged()  
'    Code for executing the desired action.  
End Sub  

Poprzedni przykład duplikuje podpis w deklaracji dokładnie, ale możliwe są odmiany. W szczególności można dodać inne modyfikatory, takie jak Overloads lub Overrides. Dozwolony jest tylko jeden Overrides modyfikator. Aby uzyskać więcej informacji na temat modyfikatorów metod, zobacz Sub Statement.

Używanie

Wywołasz metodę częściową, tak jak wywołasz dowolną inną Sub procedurę. Jeśli metoda została zaimplementowana, argumenty są oceniane, a treść metody jest wykonywana. Należy jednak pamiętać, że implementacja metody częściowej jest opcjonalna. Jeśli metoda nie jest zaimplementowana, wywołanie metody nie ma żadnego efektu, a wyrażenia przekazane jako argumenty do metody nie są oceniane.

Przykład

W pliku o nazwie Product. Projektant.vb zdefiniuj klasę ProductQuantity, która ma właściwość.

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

W pliku o nazwie Product.vb podaj implementację dla elementu QuantityChanged.

Partial Class Product

    Private Sub QuantityChanged()
        MsgBox("Quantity was changed to " & Me.Quantity)
    End Sub

End Class

Na koniec w metodzie Main projektu zadeklaruj Product wystąpienie i podaj początkową wartość jego Quantity właściwości.

Module Module1

    Sub Main()
        Dim product1 As New Product With {.Quantity = 100}
    End Sub

End Module

Powinno zostać wyświetlone okno komunikatu, które wyświetla ten komunikat:

Quantity was changed to 100

Zobacz też