从typeref定义.NET IL的Typespec



我已经构建了自定义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);

相关内容

  • 没有找到相关文章