>>424
それが、「コンパイルには通るが拡張メソッドを呼ぶと失敗する」例だというのなら、
言いたいことは分かった。

ただ、それは失敗して当然というか、
「知らない図が書けない」だけであって、実装してない部分が動かないだけ。
丁寧にやるのなら、拡張メソッドがない場合に□を
出力して対応するしかないし、それだけでしかない。(文字化けのようなもの)
(C#に実装の有無を確認する方法があるかどうかは知らない。
JavaScriptでは問題なく出来る。
拡張メソッドが多態出来るのなら、親(Shape)に□を表示させるメソッドを実装しておく)

別にそれは正しく全てを実装する時に手間が増えるわけでもない。
dllが他言語から供給されたとしても関係ない。
そもそもそちらの言うとおりShapeが演算用クラスであった場合、
クラスを追加する側にこちら『だけ』で使っている拡張メソッドを実装してくれと言うのが無理。
拡張メソッドは使う側が全部管理しなければならないだけ。実装も。

実装を強制する方法はないが、その必要もない。
自前で実装済みかどうかを判定して対応するのみ。
(定義を確認する方法がないのなら困ったことになるが、
それでも最悪try-catchは出来ると思うが、駄目なのか?)