部分メソッド

更新 : 2007 年 11 月

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

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

宣言

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

Partial Private Sub QuantityChanged()
End Sub

この定義は、次の条件を満たす必要があります。

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

  • メソッドの本体は、空のままにする必要があります。

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

実装

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

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

上の例では、宣言内のシグネチャを正確に複製しますが、他の指定も可能です。具体的には、Overloads や Overrides などの修飾子を追加できます。Overrides 修飾子は 1 つだけ使用できます。メソッドの修飾子の詳細については、「Sub ステートメント (Visual Basic)」を参照してください。

使用方法

部分メソッドは、他の 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

参照

概念

Sub プロシージャ

省略可能なパラメータ

LINQ to SQL でのコード生成

部分メソッドによるビジネス ロジックの追加 (LINQ to SQL)

参照

Sub ステートメント (Visual Basic)

Partial (Visual Basic)