用Reflection覆盖私有方法

dr.*_*vil 9 .net c# reflection overriding

是否可以通过在.NET 3.5中使用Reflection来覆盖私有方法?

Mar*_*ell 7

好吧,它需要virtual是可以覆盖它(通过编写一个继承自类的动态类型),你不能拥有private virtual(它没有意义).你可以覆盖一个internal virtual,但我怀疑即使这可能会遇到安全问题.所以最终,我会说不.


Blu*_*que 5

不仅仅使用反射.也许您可以做的最好的事情是使用Reflection,结合Reflection.EmitCodeDom将类复制到新的命名空间中.当您遇到要替换的私有方法时,不要复制它,而是放弃替换.

但是,开发人员可以使用许多技术来使这种技术变得更加困难.将类的实现分解为许多私有或内部类就是这样的.

注意:使用CodeDom,您必须在内存中构建图形,编译它,然后加载生成的程序集.

这可能比它的价值更麻烦.

另一种方法是使用Reflector来反汇编类,使用方法replace来获取代码并从中构建自己的类.同样需要克服重大的技术和法律障碍.您可以从反汇编代码中学到很多东西.

  • 你可以知道一些代码是混淆的:-) (2认同)