1

私は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、次のような行がある場合は常に sが含まれますMath.Abs()TypeDeclaration同じ構文ツリーにも存在する場合、参照された型のを取得するにはどうすればよいですか?

私が得た最も近いものは次のとおりですTypeReferenceExpression.Type.ToTypeReference().Resolve()が、これはオーケストレーションが非常に難しく、構文ツリー内のすべての情報を既に (おそらく) 持っています。名前空間と識別子を使用して手動検索も試みましたが、もっと良い方法があるはずです。

4

1 に答える 1