将IL转换为C#代码

Emb*_*rja 15 .net c#

我需要将IL转换为c#代码.我有一个集会,我正在阅读这个集会.我从MethodInfo获取MethodBody,方法体有一个方法GetILAsByteArraY(),它返回一个字节数组,现在我想将这个IL转换为C#代码.请帮我解决这个问题.

jas*_*son 20

不要重新发明轮子; 使用Lutz Roeder的.NET Reflector.

  • 我认为很明显他正试图创建另一个类似于.NET Reflector的轮子,他想知道它是如何制作的.Lutz不一定是世界上唯一知道如何制作它的人. (23认同)
  • 它不再是Lutz了. (3认同)

Duc*_*tro 15

购买了Lutz Roeder反射器,不再提供免费下载.

现在有一个名为ILSpy的免费(再次)工具.我发现它非常好,它不仅会从IL生成C#代码,而且还会.csproj在反编译整个DLL程序集时创建一个项目.


Jav*_*d S 9

重新发明轮子肯定是一种更好的学习方式!你将不得不创建自己的类,将iL转换为C#.这需要中级语言的知识.

我假设您已经将字节数组转换为IL指令,就像我们在ildasm.exe中看到的那样,使用Reflection.Emit.OpCodes,OpCode.OperandType,BitConvertor.ReadByte(),BitConvertor.ReadInt32等.