当然,在不同的组件中,这通常是不可能的。但是,微软在其“内部”文档中声明:
内部虚拟方法可以在某些语言中被覆盖,例如使用 Ilasm.exe 的文本 Microsoft 中间语言 (MSIL),即使它不能被使用 C# 覆盖。
当我拼命寻找一种方法来做到这一点时,我想知道如何才能做到这一点。我能够通过使用 ildasm/ilasm 创建一个完全执行此操作的程序集,但是运行时拒绝使用 TypeLoadException 加载它,这告诉我它不会加载覆盖内部方法的类。如果不是微软自己的那句话,我现在就放弃这种做法。是否有任何可以克服的安全方面,这将使 CLR 更加“放松”?PL。注意:我要覆盖的方法是 .NET 提供的库 (System.Web.UI.Control.LoadRecursive) 的一部分。
为什么我需要这个:我知道这个方法并不意味着被覆盖,应该争取不同的设计。但是,我非常有信心,我的用例没有替代解决方案。我想用 catch 子句隔离部分控件树,以防止错误的控件破坏整个页面。不幸的是,MS 没有在官方 API 上提供任何方法(见这里!),因此,我现在正在寻找这样的黑客。
感谢您的任何小提示。