我正在使用 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/