Как правило, если в языке нет способа сделать что-то, это обычно означает, что есть веская концептуальная причина не делать этого.
Иногда в этом виноваты разработчики языка - но не часто. Обычно я нахожу, что они знают больше о языковом дизайне, чем я; -)
В этом случае вы хотите, чтобы не переопределенный виртуальный метод генерировал исключение времени компиляции (скорее, и исключение времени выполнения). В основном абстрактный метод тогда.
Заставить виртуальные методы вести себя как абстрактные просто создаст для вас мир путаницы в дальнейшем.
С другой стороны, дизайн подключаемого модуля VS часто не совсем на том же уровне (это немного несправедливо, но, конечно, применяется меньше строгости, чем на этапе проектирования языка - и это правильно). Некоторые инструменты VS, такие как конструктор классов и текущие редакторы WPF, являются хорошими идеями, но не полностью завершены - пока.
В случае, если вы описываете, я думаю, у вас есть аргумент не использовать конструктор класса, а не аргумент для взлома вашего кода.
В какой-то момент (возможно, в следующем VS) они приведут в порядок, как конструктор классов работает с абстрактными классами, и тогда у вас будет хак, не зная, почему он был так закодирован.
Всегда должно быть последним средством взломать ваш код, чтобы соответствовать дизайнеру, и когда вы пытаетесь свести хаки к минимуму. Я считаю, что обычно лучше иметь краткий, читаемый код, который имеет смысл быстрее, чем византийский код, который работает в текущих сломанных инструментах.