Чтобы свести на нет ответ Алекса, вы можете определить второй интерфейс IMyOtherInterface с помощью вашего дополнительного метода.Затем сделайте что-то вроде этого:
void Op(IMyInterface x, IMyOtherInterface y) {
x.This();
x.That();
if(y != null) {
y.TheOther();
}
}
Когда вы вызываете метод, если ваш класс реализует оба интерфейса, вы можете передать его дважды.В противном случае только один раз.Нет причины, по которой ваша реализация должна знать, что это один и тот же класс, реализующий оба интерфейса.Если вы используете VB или 4.0 C #, вы можете пометить этот второй параметр как «необязательный».
Третий вариант - просто добавить дополнительный метод в исходный интерфейс, но назвать его более общим, например: «DoFinalization () ", и пусть ваши классы реализации просто имеют пустую реализацию, за исключением одного особого случая, когда вам это нужно.