我需要将一个事件的订阅者复制到另一个事件。我可以获得事件的订阅者(例如 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/