部分メソッドを使用すると、開発者はカスタム ロジックをコードに挿入できます。 通常、コードはデザイナーによって生成されたクラスの一部です。 部分メソッドは、コード ジェネレーターによって作成される部分クラスで定義され、一般的に何かが変更されたことを通知するために使用されます。 開発者は、変更に応じてカスタム動作を指定できます。
コード ジェネレーターのデザイナーは、メソッド シグネチャとメソッドの 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 ステートメント」を参照してください。
用途
その他の 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
こちらも参照ください
.NET