ОК, вот пример необходимости 'метода типа'. Я создаю один из набора классов на основе исходного XML. Итак, у меня есть
static public bool IsHandled(XElement xml)
функция, которая вызывается по очереди для каждого класса.
Функция должна быть статической, так как в противном случае мы тратим время на создание неподходящих объектов.
Как отмечает @Ian Boyde, это можно сделать на фабричном классе, но это только добавляет сложности.
Было бы неплохо добавить его в интерфейс, чтобы заставить разработчиков классов реализовать его. Это не приведет к значительным накладным расходам - это только проверка времени компиляции / компоновки и не влияет на виртуальную таблицу.
Однако, это также будет довольно незначительным улучшением. Поскольку метод является статическим, я, как вызывающая программа, должен вызывать его явно и, таким образом, получить немедленную ошибку компиляции, если он не реализован. Разрешение его указания на интерфейсе означало бы, что эта ошибка незначительно появляется раньше в цикле разработки, но это тривиально по сравнению с другими проблемами с неработающим интерфейсом.
Таким образом, это небольшая потенциальная особенность, которую, вероятно, лучше всего не учитывать.