我正在使用反射向事件添加事件处理程序:
var eventInfo = type.GetEvent(eventName);
MethodInfo mi = GetType().GetMethod("TestMethod",
BindingFlags.Instance | BindingFlags.NonPublic);
var delegateForMethod = Delegate.CreateDelegate(eventInfo.EventHandlerType, this, mi);
eventInfo.AddEventHandler(this, delegateForMethod);
这在事件发生时成功调用了我的测试方法,这很棒,但现在我需要知道最终调用此方法的事件的名称......
void TestMethod(object sender, EventArgs e)
{
// I know the sender, but which event was fired on the sender?
}
我需要这个的原因是因为我有这个通用的注册方法,它将处理程序连接到不同的类型和不同的事件,并将它们全部引导到一个方法,同时还记下附加的内容。一旦测试方法触发,我需要取出该注释并使用该信息通知正确的对象他们的“期望”事件已触发。-- 但要知道这一点,我需要知道事件名称和类型。
例如,在寄存器中,我为对象 O. 添加了类型 X 中的事件 A.... 现在当我看到它在测试方法中触发时,我需要知道它是类型 X 中的事件 A,所以我可以通过 a 通知对象 O某种接口方法就可以了。