C# 反射 如何获取一个程序集的所有非托管DLL

Lexiaoyao20 2011-09-05 03:48:55
如下,怎样获取一个程序集DllImport特性导入的所有的非托管DLL?

[DllImport("user32.dll")]
public static extern bool MessageBeep(BeepType beepType);

...全文
247 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lexiaoyao20 2011-09-07
  • 打赏
  • 举报
回复
谢谢各位,问题解决,结贴。
我姓区不姓区 2011-09-06
  • 打赏
  • 举报
回复

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);
}
}
}

sdl2005lyx 2011-09-06
  • 打赏
  • 举报
回复 1
楼主,这样跟你说呗,反射是基于net的组件化编程,而非托管dll是基于不同平台开发普通dll,不具备组件性质,自然不能用反射来获取。

类似的方式倒是可以考虑:

LoadLibrary() + GetProcAddress()
Lexiaoyao20 2011-09-05
  • 打赏
  • 举报
回复
为什么不行呢?
chichenzhe 2011-09-05
  • 打赏
  • 举报
回复
必然不行.
feixuyue 2011-09-05
  • 打赏
  • 举报
回复
不知道是什么样的type

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧