c# - 如何获得事件的订阅者?

标签 c# events

我需要将一个事件的订阅者复制到另一个事件。我可以获得事件的订阅者(例如 MyEvent[0] 返回委托(delegate))吗?

如果这不可能,我将使用添加访问器将委托(delegate)添加到列表中。这是最好的解决方案吗?

最佳答案

C# 事件/委托(delegate)是多播的,因此委托(delegate)本身是一个列表。从类(class)内部,要获得个人来电者,您可以使用:

if (field != null) 
{ 
    // or the event-name for field-like events
    // or your own event-type in place of EventHandler
    foreach(EventHandler subscriber in field.GetInvocationList())
    {
        // etc
    }
}

但是,要一次赋值,只需使用 += 或直接赋值:

SomeType other = ...
other.SomeEvent += localEvent;

关于c# - 如何获得事件的订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/572647/

相关文章:

c# - 在 ConfigureServices 中注入(inject)依赖

c# - 提交表单后在 ASP.net C# 中显示/隐藏面板

Javascript 使用 IE9 创建事件

vb.net - 为什么我无法在 vb.net Visual Studio 2010 中声明应用程序事件?

c# - 如何使用表达式树创建一个空委托(delegate)?

c# - (C# 'Random' 是一个命名空间,但像变量一样使用)我不明白为什么

c# - 使用 Entity Framework 为 CRUD 操作实现通用存储库时出错

c# - 使用 Serilog 文件接收器维护(单个)稳定文件名

c# - 捕获网络浏览器或 watin 中的用户事件

javascript - 捕获VLC Webplugin的MediaPlayerPlaying事件