使用共享子事件?

时间:2016-12-09 16:03:52

标签: vb.net events

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

Shared

现在我想允许通过Friend Class MMDates Friend Shared Sub Calculate(ByRef CP As DataPlug) MsgBox("dates was called with " & CP.Name) End Sub End Class 调用该方法,所以我做了:

RaiseEvent

在来电者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中可以使用Shared事件模式吗?

1 个答案:

答案 0 :(得分:0)

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