これは答えにはあまり意味がないかもしれませんが、.NETで動的プロキシが普及していない理由の1つは、最も一般的な.NET言語(C#、VB.NET)がJava非常に重要な側面の1つである:
Javaでは、明示的にシールされていない限り、すべてのメソッドは仮想です。
C#(およびVB.NET IIRC)では、明示的に仮想宣言されていない限り、すべてのメソッドとプロパティが封印されます。
これは、ダイナミックプロキシの潜在的な値が、Javaの場合よりも.NETの方がはるかに低いことを意味します。あなたは明示的にあなたの.NETオブジェクトをプロキシブルに設計しなければなりません。ほとんどの人はそうしません。つまり、.NETオブジェクトをプロキシブルにする意識的な決定が必要です。
私はキャッスル以外のダイナミックプロキシを考えることはできませんが、実際にはDIコンテナ以外の.NETダイナミックプロキシを見るのは稀です。
「デフォルトで封印された」動作は、.NET の言語の機能であることに注意してください.Javaと同じ「デフォルトで仮想」動作を持つ.NETベースの言語を設計することは非常に考えられます。私は何も知らないが、そのような言語が存在しなければ私は驚くだろう。結局のところ、それはすべてコンパイラにあります。