原則として、言語に何かをする方法がない場合、それは一般的にそれをしないという良い概念的な理由があることを意味します。
これは言語設計者の責任である場合もありますが、多くはありません。通常、彼らは私よりも言語デザインについてよく知っていると思います;-)
この場合、オーバーライドされていない仮想メソッドでコンパイル時例外(ではなく実行時例外)をスローする必要があります。基本的には抽象的なメソッドです。
仮想メソッドを抽象的なメソッドのように動作させることは、将来的に混乱の世界を作り出すことになります。
一方、VSプラグインの設計は、多くの場合、まったく同じレベルではありません(これは少し不公平ですが、言語設計の段階よりも厳密さは確かに低くなります-そして当然のことながら)。クラスデザイナーや現在のWPFエディターなど、一部のVSツールは優れたアイデアですが、実際には完全ではありません。
あなたが説明している場合、あなたはクラスデザイナを使用しないという議論があり、コードをハッキングするという議論はないと思います。
ある時点で(おそらく次のVSで)、クラスデザイナーが抽象クラスをどのように処理するかを整理します。その後、なぜそのようにコーディングされたのかわからないハックが発生します。
デザイナーに合うようにコードをハッキングする最後の手段であり、ハッキングを最小限に抑えようとする場合は常にそうする必要があります。私は通常、現在壊れているツールで機能するビザンチンのコードよりもすぐに意味のある簡潔で読みやすいコードを持っている方が良いと思います。