IDispatch используется для языков связывания во время выполнения, таких как VB, обычно вам не нужно делать это для строго типизированного языка, такого как c #.
Когда вы вызываете метод через IDispatch, вы фактически создаете массив, содержащий идентификатор метода (называемый dispid) и параметры, а затем передаете это функции, которая просматривает таблицу методов с помощью dispid, когда находит Во-первых, он использует ваш массив параметров для создания стека вызовов, а затем вызывает метод. (Это, конечно, упрощение).
Итак, зная, что класс реализует IDispatch, вам почти ничего не сказано.
Так что это ложное руководство, или вы пропустили объявление для таблиц отправки MessageEventHandler.
Не удивительно, что вы не можете понять, как реализовать это, вы упускаете некоторую жизненно важную информацию.