调用内部或私有方法的N种方法
💡
原文中文,约3200字,阅读约需8分钟。
📝
内容提要
本文介绍了获取非公开类型或方法的几种实现方式,包括反射、MethodInfo.CreateDelegate方法、基于表达式的解决方案、动态方法(IL Emit)和动态方法(calli)等。
🎯
关键要点
- 非公开类型或方法被隐藏在程序集内部,有时需要从外部访问。
- 反射是一种常见但效率低下的方式来访问非公开成员。
- MethodInfo.CreateDelegate方法可以创建委托以访问非公开属性。
- 表达式树可以将反射解决方案转换为更高效的实现。
- 动态方法(IL Emit)利用IL指令调用非公开方法。
- 动态方法(calli)使用Calli指令进行方法调用,涉及IL治理。
➡️