Сядьте и постройте свою пирамиду на прочной основе.То, как вы все настроили, абстрактный базовый класс и интерфейс - конкурирующие методы реализации одной и той же концепции.Вы делаете это, прежде всего, чтобы облегчить «Старый» против «Нового», но при этом вы получите довольно прикольный граф зависимостей.
С тем, что вы написали, ваша единственная хитрость - это методы с такой же сигнатурой.Если бы не эта проблема, вы могли бы легко расширить старый интерфейс и не столкнуться с проблемами.Если этот метод изменяется в новом, это изменение рефактора (приемлемо) или совершенно другой результат?Другими словами, может ли старый клиент назвать нового?Если это так, то нет необходимости использовать этот метод в другом интерфейсе.
Убедитесь, что вы устарели, так что пользователи знают, что они потеряют старые методы.Также убедитесь, что это задокументировано.