Suscripción de evento dinámico de C #

¿Cómo se suscribiría dinámicamente a un evento de C # para que, dada una instancia de Object y un nombre de Cadena que contenga el nombre del evento, se suscribiera a ese evento y hiciera algo (escribir en la consola, por ejemplo) cuando ese evento se haya activado?

Parece que usar Reflection no es posible y me gustaría evitar tener que usar Reflection.Emitir si es posible, ya que actualmente (para mí) parece ser la única forma de hacerlo.

/EDITAR: No sé la firma del delegado necesaria para el evento, este es el núcleo del problema

/ EDITAR 2: Aunque la contravarianza delegada parece un buen plan, no puedo asumir lo necesario para usar esta solución

Respuestas a la pregunta(9)

Su respuesta a la pregunta