我正在玩C#反射API.我可以轻松地Type
在程序集中加载类,方法等信息,但是,现在我想知道如何加载和读取方法中的代码?
Chr*_*lor 16
这取决于您阅读代码的含义.有4种形式的代码.
1-源代码,例如.原始的C#或VB.NET - 不,你不能用反射得到这个
- 符号IL代码 - 不,你不能用反射得到这个
3- JITed汇编代码 - 不,你不能用反射得到这个
4- IL字节,IL编译到的实际字节,你可以得到.
例如,看一下MethodBase.GetMethodBody(),你可以得到IL字节,局部变量,异常帧等 .http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody的.aspx
你有点可以.相关函数是MethodBase.GetMethodBody.
它并不是最有用的API.您可以获得有关方法内部内容的一些基本信息,并且可以将IL作为字节数组获取.就是这样.
Mono.Cecil库中有一个稍好的API ,它公开了一个包含实际MethodDefinition
的MethodBody
实现的类Instructions
,因此您不必解释原始字节代码.尽管如此,如果你想从反射器中获取C#代码,你将会非常失望.此外,塞西尔没有很好的记录.
如果你还想尝试,那么祝你好运.
归档时间: |
|
查看次数: |
24027 次 |
最近记录: |