从typeref定义.NET IL的Typespec

Define TypeSpec from TypeRef for .Net IL

本文关键字:Typespec IL NET typeref 定义      更新时间:2023-10-16

我已经构建了自定义IL重写器,将自定义代码注入某些方法。该注入的一部分,我想实例化List<int>的对象。我已经找到了列表〜1的mdtokenref。

在此mdtokenref中,如何定义或获取Typespec?我可以定义打字机,如下所示。但是,寻找iCorprofiler API查找Typespec。

COR_SIGNATURE sigListInt[] = { ELEMENT_TYPE_GENERICINST, ELEMENT_TYPE_CLASS, tdList, 0x01, ELEMENT_TYPE_I1 };

您无法从mdtokenref定义Typespec,但是您可以使用imetadataemit对象并通过getTokenFromTypespecece来定义您的Typespec。

要获取imetadataemit对象,您可以使用imetadataimport,可提供查询函数

IMetaDataImport* mdImport;
....
IMetaDataEmit* mdEmit;
HRESULT hr = mdImport->QueryInterface(IID_IMetaDataEmit, (void**)&mdEmit);