C# 反射 如何获取一个程序集的所有非托管DLL
如下,怎样获取一个程序集DllImport特性导入的所有的非托管DLL?
[DllImport("user32.dll")]
public static extern bool MessageBeep(BeepType beepType);
------解决方案--------------------不知道是什么样的type
------解决方案--------------------必然不行.
------解决方案--------------------楼主,这样跟你说呗,反射是基于net的组件化编程,而非托管dll是基于不同平台开发普通dll,不具备组件性质,自然不能用反射来获取。
类似的方式倒是可以考虑:
LoadLibrary() + GetProcAddress()
------解决方案--------------------
C# code
Assembly asm = Assembly.LoadFile("程序集路径");
foreach (Type t in asm.GetTypes())
{
foreach (MethodInfo mi in t.GetMethods(BindingFlags.Static | BindingFlags.Public))
{
foreach (object obj in mi.GetCustomAttributes(false))
{
if (obj is DllImportAttribute)
Console.WriteLine(((DllImportAttribute)obj).Value);
}
}
}