【发布时间】:2014-06-19 17:54:37
【问题描述】:
如果我有一堆动态创建或销毁的相同类的对象,并且我想订阅每个对象中的一个事件,我将如何管理这些订阅? .NET 中是否有一个可以保存事件订阅列表的类?该场景将是一个气象站,其实时数据显示在地图上。对于地图上可见的每个气象站,我都会订阅一个传感器。但是,当该站不再可见时,我将取消订阅该事件。或者更好的解决方案是管理对象本身。
【问题讨论】:
标签: c# .net events object dynamic
如果我有一堆动态创建或销毁的相同类的对象,并且我想订阅每个对象中的一个事件,我将如何管理这些订阅? .NET 中是否有一个可以保存事件订阅列表的类?该场景将是一个气象站,其实时数据显示在地图上。对于地图上可见的每个气象站,我都会订阅一个传感器。但是,当该站不再可见时,我将取消订阅该事件。或者更好的解决方案是管理对象本身。
【问题讨论】:
标签: c# .net events object dynamic
了解您使用的语言会有所帮助。在 VB.NET 中有一个很棒的东西叫做 AddHandler 可以将任何对象的事件连接到一个过程。
假设您在获取要跟踪的对象时执行此过程(EventClass 是引发 StuffHappened 事件的类,不提供其他参数):
Sub AddEntity(Entity As EventClass)
' do the normal stuff, add to list maybe
AddHandler Entity.StuffHappened, Sub() Happenings(Entity)
End Sub
Sub() Happenings(Entity) 是一个 lambda,一个迷你子例程,在这种情况下,它关闭了 Entity 对象。因此,当类引发事件时,您的 Happenings 子将被调用,引发者作为参数传递。如果您的事件提供了一些参数,请将它们包含在 Sub() 的括号中,并将它们适当地传递给您的处理程序。
【讨论】: