分部方法使开发人员能够将自定义逻辑插入代码中。 通常,代码是设计器生成的类的一部分。 分部方法在代码生成器创建的分部类中定义,它们通常用于提供已更改的通知。 它们使开发人员能够指定自定义行为以响应更改。
代码生成器的设计器仅定义方法签名和对方法的一个或多个调用。 然后,如果开发人员想要自定义生成的代码的行为,则可以为该方法提供实现。 如果未提供实现,编译器会删除对方法的调用,因此不会造成额外的性能开销。
声明
生成的代码通过在签名行的开头放置关键字 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 语句。
使用
可以像调用任何其他 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