Поделиться через


Разделяемые методы (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 (Visual Basic).

Применение

Вызовите разделяемый метод таким же образом, как вызывается любая другая процедура 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

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

Module Module1

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

End Module

Появится окно, которое выводит сообщение:

Quantity was changed to 100

См. также

Ссылки

Оператор Sub (Visual Basic)

Partial (Visual Basic)

Основные понятия

Подпрограммы (Visual Basic)

Необязательные параметры (Visual Basic)

Code Generation in LINQ to SQL

How to: Override Default Methods