Assinatura de evento dinâmico em C #

Como você se inscreve dinamicamente em um evento C # para que, dada uma instância Object e um nome String que contenham o nome do evento, você se inscreva nesse evento e faça algo (grave no console por exemplo) quando esse evento for disparado?

Parece que usando o Reflection isso não é possível e eu gostaria de evitar o uso do Reflection.Emit, se possível, pois isso atualmente (para mim) parece ser a única maneira de fazê-lo.

/EDITAR: Não sei a assinatura do delegado necessária para o evento, este é o núcleo do problema

/ EDIT 2: Embora a contravariância de delegado pareça um bom plano, não posso assumir que seja necessário usar esta solução

questionAnswers(9)

yourAnswerToTheQuestion