How can I get a list of the underlying delegates from an event using reflection?

前端 未结 1 1538
时光取名叫无心
时光取名叫无心 2020-12-04 01:41

First, GetInvocationList() won\'t work, because I want to be able to get to them from outside the class. I assume it will work with some reflection mag

相关标签:
1条回答
  • 2020-12-04 02:25

    This should work:

    var fieldInfo = fooEventDispatcher.GetType().GetField(
                    "FooEvent", BindingFlags.Instance | BindingFlags.NonPublic);
    var eventDelegate = fieldInfo.GetValue(fooEventDispatcher) as MulticastDelegate;
    if (eventDelegate != null) // will be null if no subscribed event consumers
    {
       var delegates = eventDelegate.GetInvocationList();
    }
    

    Also you should use typeof(SomeFooClass) instead of fooEventDispatcher.GetType() if the type is already known at compile time (which I assume it is).

    0 讨论(0)
提交回复
热议问题