从另一个类/对象调用共享函数时引发的 VB.net 类事件?

3 vb.net events function

如何创建或使用从另一个对象或类调用共享子/函数时引发的事件?

我将展示一个示例:我有访问数据库的 DataHost 类:

Class DataHost

Shared Sub addName().....
Shared Sub delName().....
Shared Function getNames()....

Shared Function askPassword()........

End Class
Run Code Online (Sandbox Code Playgroud)

我希望程序每次另一个类调用 DataHost 的子函数/函数来访问数据库时都要求输入密码。

我可以在每个函数的开头添加,if askpass()=False Then return但在我的代码中,函数超过 20 个,我希望有一个更智能的解决方案。

所以我正在寻找askPassword()每当您调用另一个子/函数时都会调用的东西。

Woz*_*zeC 6

好吧,这可能根本不是您所要求的,但我将发布共享事件的代码,然后您可以查看是否可以以任何方式使用它。(这是我的日志事件,所以请忽略命名)

Public Class Logging
    Public Shared Event LogEvent As EventHandler
    Public Shared Sub OnLogWrite(ByVal Sender As Object)
        RaiseEvent LogEvent(Sender, New EventArgs)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

这是您必须收听的共享活动。您可以在任意位置向 LogEvent 添加处理程序。它会获取对此的所有调用。在这里,您可以创建一个共享变量来跟踪发送者值。例如(对象的)列表。

您可以在任何地方(除了Shared方法或函数内,因为没有实例)引发事件:

Logging.OnLogWrite(Me)
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式在任何地方收听活动:

AddHandler Logging.LogEvent, AddressOf HandleLogEvent
Run Code Online (Sandbox Code Playgroud)

HandleLogEvent 的代码如下所示:

Private Sub HandleLogEvent()
    MessageBox.Show("Hello.")
End Sub
Run Code Online (Sandbox Code Playgroud)

例如,HandleLogEvent 可以重命名为askPassword。这意味着如果在 OnLogWrite Sub 中没有进行检查。然后每当调用该事件时,askPassword 都会被执行。希望这能以某种方式帮助您。