我正在使用ICSharpCode.Decompiler.Ast.AstBuilder
(由 SharpDevelop、NRefactory 和 ILSpy 在后台使用;也从那里获得灵感)从代码中使用 .NET 通用中间语言程序集构建抽象语法树。
var assembly = AssemblyDefinition.ReadAssembly(assemblyPath);
var astBuilder = new AstBuilder(new DecompilerContext(assembly.MainModule));
astBuilder.AddAssembly(assembly);
// astBuilder.SyntaxTree ...
TypeReferenceExpression
只要有行 like ,语法树就会包含s Math.Abs()
。TypeDeclaration
当引用类型也存在于同一语法树中时,如何检索它?
我得到的最接近的是TypeReferenceExpression.Type.ToTypeReference().Resolve()
,但编排起来非常繁重,而且我已经(我想)拥有语法树中的所有信息。我还尝试使用命名空间和标识符进行手动查找,但我想应该有更好的方法。