Вместо использования оператора is
для проверки типов, вы можете (не должны) реализовать свой собственный переопределяемый метод интерфейса, который выполняет аналогичную функцию, и реализовать его с помощью оператора is
(или typeof()/GetType()
) на вашей обычной группе классов.
Тем не менее, если вы используете оператор is
таким образом, чтобы его можно было тестировать подобным образом, более вероятно, что вы в основном побеждаете цель полиморфизма и интерфейсов где-то вдоль линии. Я бы подумал, смогу ли я просто избавиться от этого.