分部方法 (Visual Basic)

分部方法使开发人员能够将自定义逻辑插入代码中。 通常,代码是设计器生成的类的一部分。 分部方法在代码生成器创建的分部类中定义,它们通常用于提供已更改的通知。 它们使开发人员能够指定自定义行为以响应更改。

代码生成器的设计器仅定义方法签名和对方法的一个或多个调用。 然后,如果开发人员想要自定义生成的代码的行为,则可以为该方法提供实现。 如果未提供实现,编译器会删除对方法的调用,因此不会造成额外的性能开销。

声明

生成的代码通过在签名行的开头放置关键字 Partial 来标记分部方法的定义。

Partial Private Sub QuantityChanged()  
End Sub  

定义必须满足以下条件:

  • 该方法必须是一个 Sub,而不是一个 Function

  • 方法的正文必须留空。

  • 访问修饰符必须是 Private

执行

实现主要包含在分部方法的主体中进行填充。 实现通常与定义位于单独的分部类中,并由想要扩展生成的代码的开发人员编写。

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

前面的示例完全复制声明中的签名,但变体是可能的。 具体而言,可以添加其他修饰符,例如 OverloadsOverrides。 只允许一个 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

另请参阅