Я подозреваю, что семантика интерфейса не соответствует тому, что вы пытаетесь сделать.
Интерфейс просто говорит, что класс должен реализовать список членов. Класс наследует интерфейс, но дочерний класс по-прежнему несет ответственность за реализацию интерфейса, который он унаследовал от родителя. В большинстве случаев родительский объект уже предоставляет реализацию, поэтому мы склонны воспринимать реализацию интерфейса так же, как наследование, но на самом деле это совершенно разные концепции.
В вашем случае лучшее, что вы можете сделать, - это восстановить отображение интерфейса с помощью GetInterfaceMap () и убедиться, что вся реализация каждого элемента интерфейса идет от родителя, а не от дочернего элемента. Это лучшее, что вы можете сделать, но, тем не менее, он не будет делать то, что вы пытаетесь сделать.
Кроме того, возможно ли в вашем случае использовать полностью абстрактные классы вместо интерфейсов? Вы не можете использовать множественное наследование, но, возможно, все ваши правила подразумевают очень линейное наследование?