VB.NET中如何实现共享子事件的使用?

2026-05-06 13:332阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计353个文字,预计阅读时间需要2分钟。

VB.NET中如何实现共享子事件的使用?

我有一个方法应该作为Shared实现,因为它没有内部状态:Friend Class MMDates Friend Shared Sub Calculate(ByRef CP As DataPlug) MsgBox dates was called with & CP.Name End SubEnd Class

我有一个应该作为Shared实现的方法,因为它没有内部状态:

Friend Class MMDates Friend Shared Sub Calculate(ByRef CP As DataPlug) MsgBox("dates was called with " & CP.Name) End Sub End Class

现在我想允许通过RaiseEvent调用该方法,所以我做了:

VB.NET中如何实现共享子事件的使用?

Friend Class MMDates Friend Shared WithEvents DP As DataPlug Friend Shared Sub Calculate(ByRef CP As DataPlug) Handles DP.CalculateDates MsgBox("dates was called with " & CP.Name) End Sub End Class

在调用者DataPlug中,我补充说:

Public Event CalculateDates(ByRef CP As DataPlug) Friend Sub Calculate() RaiseEvent CalculateDates(Me) End Sub

所有这些编译都很好,并且调用Raise时没有错误,但事件永远不会被MMDates捕获.我通过将其添加到MMDates实现了一个替代方案:

Public Shared Sub StartListening() AddHandler DataPlug.CalculateDates, AddressOf Calculate End Sub

…然后在我的应用程序的启动例程中调用它.这在技术上是我想要的 – 事件确实最终调用共享方法.但是,此链接是在运行时创建的,即使它确实是在编译时定义的.

那么这个共享事件模式在VB.net中是否可以在编译时使用Handles或其他语法的变体?

好吧,所以这样做的正确方法是使用Partial将你烘焙到较低级别,然后只填写混合.所以在我的情况下,我为基类中的Calculate和Calc中的实现做了部分,并且presto!

本文共计353个文字,预计阅读时间需要2分钟。

VB.NET中如何实现共享子事件的使用?

我有一个方法应该作为Shared实现,因为它没有内部状态:Friend Class MMDates Friend Shared Sub Calculate(ByRef CP As DataPlug) MsgBox dates was called with & CP.Name End SubEnd Class

我有一个应该作为Shared实现的方法,因为它没有内部状态:

Friend Class MMDates Friend Shared Sub Calculate(ByRef CP As DataPlug) MsgBox("dates was called with " & CP.Name) End Sub End Class

现在我想允许通过RaiseEvent调用该方法,所以我做了:

VB.NET中如何实现共享子事件的使用?

Friend Class MMDates Friend Shared WithEvents DP As DataPlug Friend Shared Sub Calculate(ByRef CP As DataPlug) Handles DP.CalculateDates MsgBox("dates was called with " & CP.Name) End Sub End Class

在调用者DataPlug中,我补充说:

Public Event CalculateDates(ByRef CP As DataPlug) Friend Sub Calculate() RaiseEvent CalculateDates(Me) End Sub

所有这些编译都很好,并且调用Raise时没有错误,但事件永远不会被MMDates捕获.我通过将其添加到MMDates实现了一个替代方案:

Public Shared Sub StartListening() AddHandler DataPlug.CalculateDates, AddressOf Calculate End Sub

…然后在我的应用程序的启动例程中调用它.这在技术上是我想要的 – 事件确实最终调用共享方法.但是,此链接是在运行时创建的,即使它确实是在编译时定义的.

那么这个共享事件模式在VB.net中是否可以在编译时使用Handles或其他语法的变体?

好吧,所以这样做的正确方法是使用Partial将你烘焙到较低级别,然后只填写混合.所以在我的情况下,我为基类中的Calculate和Calc中的实现做了部分,并且presto!