>>426
それがC#の設計思考とずれてるんだよ。
できるならば静的に解決したい。コンパイルに通ったならメソッドが存在し、存在することを前提に最適化したい。
ただの静的メソッド呼び出しだったのに、動的に確認する分かなりコストが高くなる。数万の木構造にやるなら1msが命取り

あとは、それを実装すると名前解決が異常に複雑になり、今後の言語拡張の障害にもなるな

その程度で良いならRoslynを使ってVSのプラグインでshape.Draw()ってコードをパターンマッチングに展開するプラグインを作ればいいんじゃないかな。