分部方法 (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 的文件中,定义一个具有 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

另请参阅