Поскольку интерфейс определяет контракты, а не реализацию, на самом деле нет способа "заставить" реализации вести себя определенным образом.
При этом я немного растерялся, когда вы упоминаете обработчик события в том же классе, что и событие. Если я не путаю некоторую терминологию, обработчики - это методы, которые принадлежат подписчику события, а не издателю. Под этим вы подразумеваете что-то вроде «On<Event>
» метода? Если вам нужно представить их чему-то за пределами класса, то они также могут быть добавлены к интерфейсу, но реализовать класс должен знать, как связать их вместе, и это выглядит как своеобразный дизайн.
Если вы пытаетесь заставить что-то вроде такого поведения, будет ли что-то вроде {абстрактного} базового класса соответствовать вашим потребностям лучше, чем интерфейс?
(ETA: Вы также можете рассмотреть шаблон Observer?)