簡體   English   中英

使用非托管代碼,如何找到具有給定自定義屬性的類型?

[英]Using unmanaged code, how can I find a type that has a given custom attribute assigned to it?

我以為可以使用IMetaDataImport.EnumTypeDefs枚舉類型,對於返回的每個標記,請調用IMetaDataImport.EnumCustomAttributes。

只要獲得了mdCustomAttribute令牌數組,此方法就可以工作。 使用這些標記,我可以通過調用IMetaDataImport.GetCustomAttributeProps獲得表示返回的自定義屬性的類型的元數據標記。

將我的結果與ILDASM進行比較,可以看到這與ILDASM報告的“ CustomAttribute Type”相匹配。 但是,我不知道如何確定ILDASM報告的“ CustomAttributeName”。 這就是我真正想要的!

雖然我想知道如何獲取CustomAttributeName,但我會選擇解決該問題的替代方法。

抱歉,這是RTFM的情況。 GetCustomAttributeProps返回的屬性不是typedef令牌,而是mdMethodDefmdMemberRef令牌。
對於mdMethodDef令牌,可以使用IMetaDataImport.GetMethodProps查找typeDef令牌,對於mdMemberRefs,可以使用稍長的路徑,但是從IMetaDataImport.GetMemberRefProps開始。

這個故事的寓意是要注意這些功能正在返回什么樣的令牌!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM