Разделяемые методы (Visual Basic)

Частичные методы позволяют разработчикам вставлять пользовательскую логику в код. Как правило, код является частью созданного конструктором класса. Частичные методы определяются в частичном классе, созданном генератором кода, и они обычно используются для предоставления уведомления о том, что что-то изменилось. Они позволяют разработчику указывать настраиваемое поведение в ответ на изменения.

Конструктор генератора кода определяет только сигнатуру метода и один или несколько вызовов метода. Затем разработчики могут предоставить реализации для метода, если они хотят настроить поведение созданного кода. Если реализация не предоставляется, вызовы метода удаляются компилятором, что не приводит к дополнительным затратам на производительность.

Объявление

Созданный код помечает определение частичного метода путем размещения ключевое слово Partial в начале строки подписи.

Partial Private Sub QuantityChanged()  
End Sub  

Определение должно соответствовать следующим условиям:

  • Метод должен быть не методомSubFunction.

  • Текст метода должен оставаться пустым.

  • Модификатор доступа должен быть Private.

Внедрение

Реализация состоит в основном из заполнения текста частичного метода. Реализация обычно находится в отдельном частичном классе от определения и написана разработчиком, который хочет расширить созданный код.

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

Предыдущий пример дублирует подпись в объявлении точно, но возможны варианты. В частности, можно добавить другие модификаторы, например Overloads или Overrides. Допускается только один Overrides модификатор. Дополнительные сведения о модификаторах методов см . в подразделе "Вложенный оператор".

Использование

Вы вызываете частичный метод, как можно вызвать любую другую Sub процедуру. Если метод был реализован, вычисляются аргументы и выполняется текст метода. Однако помните, что реализация частичного метода является необязательным. Если метод не реализован, вызов к нему не действует, а выражения, передаваемые в качестве аргументов методу, не оцениваются.

Пример

В файле с именем Product.Designer.vb определите Product класс, имеющий Quantity свойство.

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

В файле с именем Product.vb укажите реализацию QuantityChanged.

Partial Class Product

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

End Class

Наконец, в основном методе проекта объявите Product экземпляр и укажите начальное значение для его Quantity свойства.

Module Module1

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

End Module

Появится окно сообщения, отображающее следующее сообщение:

Quantity was changed to 100

См. также