使用非托管代码,如何找到分配了给定自定义属性的类型?

时间:2010-04-07 07:18:38

标签: .net reflection unmanaged

我以为我可以使用IMetaDataImport.EnumTypeDefs和枚举类型 对于返回的每个标记,请调用IMetaDataImport.EnumCustomAttributes。

这很有用,因为我得到了一个mdCustomAttribute标记数组。使用这些令牌,我可以通过调用IMetaDataImport.GetCustomAttributeProps来获取表示返回的自定义属性的Type的元数据标记。

将我的结果与ILDASM进行比较,我可以看到这与ILDASM报告的“CustomAttribute Type”相匹配。但是,我无法确定如何确定ILDASM报告的“CustomAttributeName”。这就是我真正想要的!

虽然我有兴趣知道如何获取CustomAttributeName,但我会选择另一种方法来解决问题。

1 个答案:

答案 0 :(得分:1)

抱歉,这是RTFM的案例。 GetCustomAttributeProps返回的属性不是typedef令牌,而是mdMethodDefmdMemberRef令牌。
对于mdMethodDef标记,使用IMetaDataImport.GetMethodProps查找typeDef标记,对于mdMemberRefs,它是稍长的路径,但是从IMetaDataImport.GetMemberRefProps开始。

故事的寓意是要注意这些功能正在返回的那种令牌!