C# 如何动态加载DLL,实例化对象

ZKEASOFT 2014-08-12 12:02:45
通过 Activator.CreateInstance(assemblyName, typeName).Unwrap() 可以实例化一个对象。
但是如何动态加载DLL,然后通过 Activator.CreateInstance(assemblyName, typeName).Unwrap() 来实例化一个对象呢。
...全文
1265 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongdongdongJL 2014-08-21
  • 打赏
  • 举报
回复
Assembly ab = assembly.LoadFrom(dllpath); Type type = ab.GetType("Class"); // method 1; object ob = Activator.CreateInstance(type); // method 2; object ob3 = Activator.CreateInstancFrom();;
ZKEASOFT 2014-08-15
  • 打赏
  • 举报
回复
我知道可以通过Assembly.Load("程序集名") 然后CreateInstance。但这不是我想要的。我要想的是,有没有什么在PreApplication Start 的时候 Load DLL (可能在其它目录),然后load进来的这个DLL能和直接添加引用或放到程序目录或Bin目录有同样的“效果”。可以使用 Activator.CreateInstance(assemblyName, typeName).Unwrap() 这个方法来实例化
liuruitao647 2014-08-15
  • 打赏
  • 举报
回复
反射
smthgdin_020 2014-08-12
  • 打赏
  • 举报
回复
Assembly.Load("程序集名").CreateInstance("类名");
sunny906 2014-08-12
  • 打赏
  • 举报
回复

Assembly ass=Assembly.LoadFrom("dllpath");
shushukui 2014-08-12
  • 打赏
  • 举报
回复
反射。最基本的用法,用过工厂模式的应该都有了解过。
ZKEASOFT 2014-08-12
  • 打赏
  • 举报
回复
其实我想说的是,被引用的DLL,或在应用程序下或(Bin)目录下的DLL,可以通过Activator.CreateInstance(assemblyName, typeName).Unwrap() 来实例化。而其它目录下的DLL,即便Load到程序的当前应用程序域,依然不能用ctivator.CreateInstance(assemblyName, typeName).Unwrap() 来实例化。这个是否有办法。 查到一点资料: You cannot load assemblies from locations outside the probing path into the default load context. http://msdn.microsoft.com/en-us/library/dd153782.aspx 还有一个方法,利用currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver); 但觉得这个方法,真不是什么好办法。还不如直接复制到目录
asia217 2014-08-12
  • 打赏
  • 举报
回复
MEF ,,,,
yaotomo 2014-08-12
  • 打赏
  • 举报
回复
反射。。。。

111,097

社区成员

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

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

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