如何从 System.Reflection.MethodBase.MetadataToken 获取 System.Reflection.Metadata.MethodDefintion?

How to get a System.Reflection.Metadata.MethodDefintion from System.Reflection.MethodBase.MetadataToken?

我已经为 .NET 程序集创建了 System.Reflection.Metadata.MetadataReader

var asm = new PEReader(peFile);
var asmReader = asm.GetMetadataReader();

我可以遍历所有 MethodDefinitions,但是如何为 System.Reflection.MethodBase 的给定实例找到特定的 MethodDefinition

我可以使用 MethodBase.MetadataToken 来查找正确的 MethodDefinition 吗?

我也想从便携式PDB中查找对应的MethodDebugInformation;但是在找到 MethodDefinition.

之后应该很容易

所以,解决方案很简单,System.Reflection.Metadata.Ecma335 包含一个 MetadataTokens class 和创建句柄的方法,然后可以用来查找 MethodDefinition:

var handle = (MethodDefinitionHandle)MetadataTokens.Handle(metadataToken);
var md = asmReader.GetMethodDefinition(handle);