c# - 我可以使用反射来检查方法中的代码吗?

标签 c# reflection

我正在使用 C# 反射 API。我可以轻松地在程序集中加载类、方法等的 Type 信息,但是,现在我想知道如何加载和读取方法中的代码?

最佳答案

基本答案:

你不能使用反射 API (System.Reflection)。

原因是反射 api 旨在处理元数据(类的类型、方法的名称和签名……),而不是数据级别(即 IL 流本身)。

扩展答案:

您可以使用 System.Reflection.Emit(例如 ILGenerator 类)发出(但不能读取)IL。

通过MethodInfo.GetMethodBody(),您可以获得用于实现方法的二进制IL 流。但这本身通常是完全无用的。

您可以使用外部库(如 Cecil)来读取/修改/添加/删除方法内的代码。

关于c# - 我可以使用反射来检查方法中的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693881/

相关文章:

c# - 使用带有进度报告的 Async/Await 下载并提取 zip 文件

c# - 在 Windows 8 中将 BitmapImage 对象保存为本地存储中的文件?

c# - 从程序集中获取所有 DLLImports?

c# - 没有端点在本地主机上监听

c# - 如何从 Selenium 访问 Chrome 开发者控制台

c# - 如何避免在 Entity Framework 中加载集合属性

c# - 序列化锯齿状数组与多维数组

java - 如何从类路径中的 Java 包中读取所有类?

c# - 将 MemberInfo[] 转换为枚举

java - Class.isAssignableFrom 在某些情况下会给出错误的结果