Разделяемые методы (Visual Basic)
Частичные методы позволяют разработчикам вставлять пользовательскую логику в код. Как правило, код является частью созданного конструктором класса. Частичные методы определяются в частичном классе, созданном генератором кода, и они обычно используются для предоставления уведомления о том, что что-то изменилось. Они позволяют разработчику указывать настраиваемое поведение в ответ на изменения.
Конструктор генератора кода определяет только сигнатуру метода и один или несколько вызовов метода. Затем разработчики могут предоставить реализации для метода, если они хотят настроить поведение созданного кода. Если реализация не предоставляется, вызовы метода удаляются компилятором, что не приводит к дополнительным затратам на производительность.
Объявление
Созданный код помечает определение частичного метода путем размещения ключевое слово Partial
в начале строки подписи.
Partial Private Sub QuantityChanged()
End Sub
Определение должно соответствовать следующим условиям:
Метод должен быть не методом
Sub
Function
.Текст метода должен оставаться пустым.
Модификатор доступа должен быть
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