获取指定 MethodInfo 的 MSIL 或者 C# 源码?

颤菊大师 2011-12-08 10:42:01
假设我现在有一个 DLL 或者 DLL 中的某个 Type。

请问我要如何在实际运用中,在代码中输出?

比如

实现效果类似:
var method = type.GetMethod("Test");

string result;
//......

Console.WriteLine(result);


结果输出(C#版):

public void Test()
{
//Test 方法的源码
}


求解了!

我尝试琢磨 Reflector 和 ILSpy 源码, 但是发现其挺复杂的,一时没研究出来。

我目前在做的是:DynamicMethod 生成一个 Emit,想输出源码。
...全文
255 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看看这个:

http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx
颤菊大师 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fangxinggood 的回复:]

引用 6 楼 mrlen 的回复:

已找到答案。感谢1L提出的线索!!


分享一下,还有想问下,上面你提到的是静态类型的方法,怎么用到 DynamicMethod ?
[/Quote]

不是很理解你这句话:上面你提到的是静态类型的方法,怎么用到 DynamicMethod ?
颤菊大师 2011-12-08
  • 打赏
  • 举报
回复
谢谢你们。通过了解。我发现他们对 DynamicMethod 是无效的。

调用 GetMethodBody 是会报错的。
颤菊大师 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangxinggood 的回复:]

这个复杂,是输出 MethodBody 么?

不过下面文章相信能有帮助:

http://www.rainsts.net/article.asp?id=373
[/Quote]

漂亮!已经接近了!!谢谢。我先琢磨琢磨
机器人 2011-12-08
  • 打赏
  • 举报
回复
这个复杂,是输出 MethodBody 么?

不过下面文章相信能有帮助:

http://www.rainsts.net/article.asp?id=373
机器人 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mrlen 的回复:]

已找到答案。感谢1L提出的线索!!
[/Quote]

分享一下,还有想问下,上面你提到的是静态类型的方法,怎么用到 DynamicMethod ?
颤菊大师 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zyloveyrf 的回复:]

引用 1 楼 fangxinggood 的回复:

这个复杂,是输出 MethodBody 么?

不过下面文章相信能有帮助:

http://www.rainsts.net/article.asp?id=373


推荐这个我看了下
[/Quote]

这个效果不佳。对于 Dynamic,是无法调用 GetMethodBody 方法。

不过这个链接给了非常大的启发。
萧炎 2011-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangxinggood 的回复:]

这个复杂,是输出 MethodBody 么?

不过下面文章相信能有帮助:

http://www.rainsts.net/article.asp?id=373
[/Quote]

推荐这个我看了下
颤菊大师 2011-12-08
  • 打赏
  • 举报
回复
已找到答案。感谢1L提出的线索!!

111,082

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧