Разделяемые методы

Обновлен: Ноябрь 2007

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

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

Объявление

Созданный код помечает определение разделяемого метода, вставляя ключевое слово 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

Необязательные параметры

Создание кода в LINQ to SQL

Добавление бизнес-логики с помощью разделяемых методов (LINQ to SQL)

Ссылки

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

Partial (Visual Basic)