Как ни странно, я обсуждал это с Джоном в тот вечер! Существует проблема приоритета - переопределенный метод определен в базовом классе, поэтому для целей «наилучшего метода» перегрузка (даже с неявным приведением) является предпочтительной, поскольку она определяется в большинстве тип (подкласс).
Если вы повторно объявите метод (new
), тогда он получит приоритет, но вы не можете override
и new
метод с тем же именем и подписью в том же типе - вы бы для достижения этого нужно добавить дополнительный уровень наследования.
Точная логика для этого подробно описана в 14.5.5 и 14.4.2 в ECMA 334 v4.
По сути, чтобы сделать базовый метод вызываемым, вам нужно либо привести его к базовому типу, либо добавить метод shim:
public void MyMethod2(int param) {base.MyMethod(param);}