我有一个应该实现为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
事件模式吗?
答案 0 :(得分:0)
好的,所以这样做的正确方法是使用Partial
来烘焙到较低级别,然后只填写混合。所以在我的情况下,我在基类中部分为Calculate
,在Calc中实现了部署,并且presto!