当前位置:  开发笔记 > 编程语言 > 正文

我如何获得活动的订阅者?

如何解决《我如何获得活动的订阅者?》经验,为你挑选了2个好方法。

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

如果这不可能,我会使用add accessor将委托添加到列表中.那会是最好的解决方案吗?



1> Marc Gravell..:

C#事件/委托是多播的,因此委托本身就是一个列表.在课堂上,为了获得个人来电,您可以使用:

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;



2> Jon Skeet..:

如果事件是由另一个类发布的事件,则不能 - 至少不可靠.虽然我们经常认为事件只是一个委托变量,但它实际上只是一对方法:添加和删除(或订阅和取消订阅).

如果它是您自己发布事件的代码,则很容易 - 您可以使添加/删除访问器执行您喜欢的任何操作.

看看我关于事件的文章,看看这对你有帮助.如果没有,请提供有关您要执行的操作的更多详细信息,指定您可以修改哪些代码以及哪些代码无法修改.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有