Кажется, что дизайн, который вы используете, немного отсталый.
Из вашего описания вы не особенно хотите иметь прямые методы Y в вашем X-интерфейсе, так почему бы не иметь, например, вторичный интерфейс Z
. Таким образом, интерфейсы будут более конкретными, и вы сможете реализовать оба интерфейса на нужных вам объектах.
Это приводит к двум меньшим интерфейсам, но с большей гибкостью.
Кроме того, вы можете создать абстрактный класс Z, используя интерфейс X. Тогда вам просто нужно унаследовать Y от Z и сделать конструкцию base()
или super()
, чтобы получить необходимую вам функциональность.
Оба должны работать на вас.