部分メソッド (Visual Basic)

部分メソッドを使用すると、開発者はカスタム ロジックをコードに挿入できます。 通常、このコードはデザイナーによって生成されるクラスの一部です。 部分メソッドは、コード ジェネレーターによって作成された部分クラスで定義され、何かが変更されたことを通知するためによく使用されます。 部分メソッドにより、開発者は変更に対応するためのカスタム動作を指定できます。

コード ジェネレーターのデザイナーは、メソッド シグネチャとメソッドの 1 つ以上の呼び出しのみを定義します。 開発者は、生成されたコードの動作をカスタマイズする場合にメソッドの実装を提供できます。 実装が提供されていない場合、メソッドの呼び出しはコンパイラによって削除されるため、パフォーマンスの追加のオーバーヘッドは発生しません。

宣言

生成されたコードでは、シグネチャ行の先頭に Partial キーワードを配置することによって部分メソッドの定義をマークします。

Partial Private Sub QuantityChanged()  
End Sub  

定義は次の条件を満たしている必要があります。

  • メソッドは Function ではなく、Sub である必要があります。

  • メソッドの本体は空のままにしておく必要があります。

  • アクセス修飾子は Private である必要があります。

実装

実装は、部分メソッドの本体の入力で主に構成されます。 通常、実装は定義とは別の部分クラスにあり、生成されたコードを拡張する開発者が記述します。

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

上記の例では、宣言のシグネチャを正確に複製していますが、バリエーションが可能です。 具体的には、OverloadsOverrides などの他の修飾子を追加できます。 Overrides 修飾子は 1 つだけ許可されます。 メソッド修飾子の詳細については、「Sub Statement (Sub ステートメント)」をご覧ください。

使用

他の Sub プロシージャを呼び出す場合と同様に、部分メソッドを呼び出します。 メソッドが実装されている場合、引数が評価され、メソッドの本体が実行されます。 ただし、部分メソッドの実装は省略可能であることに注意してください。 メソッドが実装されていない場合、その呼び出しは無効であり、メソッドに引数として渡された式は評価されません。

Product.Designer.vb という名前のファイルで、Quantity プロパティを持つ Product クラスを定義します。

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

関連項目