Como obter o nome do evento no método chamado

Eu estou usando reflexão para adicionar um manipulador de eventos a um evento:

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);

Isso chama meu método de teste com sucesso quando o evento ocorre, o que é ótimo, mas agora preciso saber o nome do evento que acabou chamando esse método ...

void TestMethod(object sender, EventArgs e)
{
    // I know the sender, but which event was fired on the sender?
}

A razão pela qual eu preciso disso é porque eu tenho esse método de registro genérico que conecta manipuladores a diferentes tipos, e diferentes eventos e canaliza todos eles para um método, enquanto também faz uma anotação do que foi anexado. Depois que o método de teste for acionado, preciso retirar essa nota e usar as informações para notificar o objeto correto de que o evento "desejado" foi acionado. - mas para saber isso eu preciso saber o nome do evento, bem como o tipo.

Por exemplo, no registro eu adicionei o Evento A no tipo X para o objeto O .... agora quando eu o vejo disparado no método de teste, eu preciso saber que foi o Evento A no tipo X, então eu posso notificar o objeto O por um determinado método de interface nele.

questionAnswers(2)

yourAnswerToTheQuestion