Так будет работать по умолчанию, но с использованием типов время компиляции . Если у вас есть Go(foo)
, а тип времени компиляции foo
не реализует ISpecific
, он вызовет второй метод, даже если объект, на который ссылается foo
, во время выполнения реализует ISpecific
. Если вы хотите, чтобы это решение принималось динамически в время выполнения , и если вы используете C # 4, вы можете написать:
dynamic value = GetValue();
something.Go(value);
... и во время выполнения будет выбрана правильная перегрузка.