开发者

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

开发者 https://www.devze.com 2023-03-16 06:14 出处:网络
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 magic, and that\'s what I\'m trying to figure out.

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 magic, and that's what I'm trying to figure out.

Here's what I have right now:

fooEventDispatcher.GetType().GetField("FooEvent", BindingFlags.Instance | BindingFlags.NonPublic);
var field = fieldInfo.GetValue(fooEventDispatcher);

I just don't know what to do with field. Any i开发者_高级运维deas?


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

精彩评论

暂无评论...
验证码 换一张
取 消