如何从 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);
我已经为 .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);