2

もちろん、別のアセンブリでは、これは一般的に不可能です。ただし、Microsoft は、「internal」のドキュメントで次のように述べています。

内部仮想メソッドは、C# を使用してオーバーライドできない場合でも、Ilasm.exe を使用してテキスト形式の Microsoft Intermediate Language (MSIL) などの一部の言語でオーバーライドできます。

これを正確に行う方法を必死に探しているので、これを実際に行う方法を考えています。ildasm/ilasm を使用して正確にそれを行うアセンブリを作成できましたが、ランタイムは TypeLoadException でアセンブリをロードすることを拒否し、内部メソッドをオーバーライドするクラスをロードしないことを示しています。マイクロソフト自身の声明がなかったら、私は今このアプローチをあきらめていたでしょう。克服できるセキュリティ面があり、CLR をより「リラックス」させるものはありますか? Pl。注: オーバーライドしたいメソッドは、.NET が提供するライブラリ (System.Web.UI.Control.LoadRecursive) の一部です。

なぜこれが必要なのですか : このメソッドはオーバーライドすることを意図しておらず、別の設計に努めるべきであることはわかっています。ただし、私のユースケースには代替ソリューションがないことを確信しています。欠陥のあるコントロールがページ全体を破壊するのを防ぐために、コントロール ツリーの一部を catch 句で分離したいと考えています。残念ながら、MS は公式 API でこれを行う手段を提供していません (ここを参照してください!)。そのため、私は現在そのようなハックを探しています。

小さなヒントをありがとう。

4

0 に答える 0