1. Ручками писать один раз виртуальный метод лень, а реализовывать 30 раз интерфейс не лень. Ты серьезно?
2. Класс не всегда должен иметь логику, не аргумент.
В целом мы говорим об одном и томже, согласен
ну почему одну и ту же? Это вопрос правильности применения) Если ты можешь переиспользовать код, то там и в расширения можно вынести) (Надеюсь ты ненавидишь расширения?)