作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一些初步信息
给定以下 C# 函数:
public static void func<T>(T t)
{
System.Console.WriteLine(t);
}
.method public hidebysig static void func<T>(!!T t) cil managed
{
ldarg.0
box !!T
call void [mscorlib]System.Console::WriteLine(object)
ret
}
10 01 01 01 1E 00
在哪里:
1B000001
指向 TypeSpec 表中的第一个条目,该条目指向 blob
02 1E 00
在哪里:
IMetaDataImport2
接口(interface),如何获取给定泛型参数所需的 TypeSpec token ?
IMetaDataEmit
接口(interface)创建一个新的 TypeSpec 最佳答案
所以我最终接受了我的第一个建议。
我想这并不理想,但它确实有效。
这是代码,如果有人感兴趣(省略错误处理):
HCORENUM typeSpecEnum = NULL;
mdTypeSpec typeSpec = mdTypeSpecNil;
ULONG outNum = -1;
// Loop through enum
while (true)
{
// Get next enum
HRESULT hr = pMetadataImport->EnumTypeSpecs(&typeSpecEnum, &typeSpec, 1, &outNum);
if (hr == S_FALSE && outNum == 0) // According to doc, this means no more. End loop
break;
// Get the signature of this typespec
PCCOR_SIGNATURE curSpecSig = NULL;
ULONG curSpecSigLen = -1;
pMetadataImport->GetTypeSpecFromToken(typeSpec, &curSpecSig, &curSpecSigLen);
if (curSpecSigLen == <my_len> && memcmp(curSpecSig, <my_sig>, <my_len>) == 0)
; // Token found
else
typeSpec = mdTypeSpecNil; // Reset and goto next token
}
pMetadataImport->CloseEnum(typeSpecEnum); // Don't forget to close enum
关于.net - 如何找到泛型参数的 TypeSpec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888459/
我是一名优秀的程序员,十分优秀!