一尘不染

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

c#

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


阅读 294

收藏
2020-05-19

共1个答案

一尘不染

基本答案:

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

原因是反射api设计用于元数据(类的类型,方法的名称和签名等),而不是在数据级别(即IL流本身)上工作。

扩展答案:

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

通过MethodInfo.GetMethodBody()您可以获得用于执行方法的二进制IL流。但是多数民众赞成通常完全没有用。

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

2020-05-19