c#中作为对象的源代码

本文关键字:源代码 对象 | 更新日期: 2023-09-27 18:03:50

是否有办法将类的源代码表示为对象?我想浏览方法,他们的身体等。像stylecop, ReSharper这样的工具是如何在Visual Studio 2010中实现的?是否有任何外部库作为输入源代码文件并产生对象的表示?我可以阅读,修改或分析?

c#中作为对象的源代码

对于已编译的程序集。反射可以给你关于对象结构的大部分信息。但是要获得真正的代码,您需要深入到IL。

至于代码,这是在Visual Studio中打开的,然后VS暴露了许多插件使用的COM接口。EnvDTE是这个接口的托管包装器。

NRefactory将为您完成:

http://wiki.sharpdevelop.net/NRefactory.ashx

编辑:这是你想要的"解析器"。它将c#代码转换为抽象语法树,然后可以用代码修改该树并将其转换回c#。

如果你只是想列出方法,类,属性名,那么反射是一个很好的简单解决方案-例如,查看简单的教程,如http://www.java2s.com/Tutorial/CSharp/0400__Reflection/ListMethods.htm

如果您想要更详细的分析,包括方法体,那么从一个或多个Reflector替换的源代码开始可能是一个好主意-例如

  • ILSpy - http://wiki.sharpdevelop.net/ILSpy.ashx
  • 光滑反射器http://blog.smoothfriction.nl/archive/2011/02/07/building-your-own-reflector-with-mono-cecil-and-the-codedom.aspx
  • 列表在这里-反射器的开源替代品?