2011-09-29 29 views
1

我試圖找到(在運行時)p/invokes及其信息:1)Dll名稱2)EntryPoint。在程序集中檢測DllImportAttribute及其數據

我試過這樣的:Assembly.GetExecutingAssembly().GetCustomAttributesData();,但由於某種原因,我沒有看到類型DllImportAttribute那裏列出,雖然我在該程序集中有一個p/invoke。

我很確定我錯過了這裏的東西。有任何想法嗎?

謝謝!

回答

2
var pinvokes = from type in Assembly.GetExecutingAssembly().GetTypes() 
       from method in type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) 
       let dllImport = (DllImportAttribute)method.GetCustomAttributes(typeof(DllImportAttribute), false).FirstOrDefault() 
       where dllImport != null 
       select new 
       { 
        DllName = dllImport.Value, 
        EntryPoint = dllImport.EntryPoint, 
       };