【发布时间】:2015-06-12 05:16:33
【问题描述】:
我正在尝试将第三方assemblies 动态 加载到项目中,并使用reflection 创建其类型的实例。
我用过:
Assembly.LoadFrom("Assembly1.dll")
Assembly.LoadFrom("Assembly2.dll")
Assembly.LoadFrom("Assembly3.dll")
也试过了:
AppDomain.CurrentDomain.Load("Assembly1.dll")
AppDomain.CurrentDomain.Load("Assembly2.dll")
AppDomain.CurrentDomain.Load("Assembly3.dll")
但是,当我尝试创建以下类型之一的实例时,我不断收到The method is not implemented 异常:
Assembly.LoadFrom("Assembly1.dll")
Assembly.LoadFrom("Assembly2.dll")
Assembly assembly= Assembly.LoadFrom("Assembly3.dll")
Type type=assembly.GetType("Assembly3.Class1")
object instance=Activator.CreateInstance(type); //throws exception at this point
但是,如果我在项目中直接add reference 到Assembly1、Assembly2 和Assembly3 并这样做:
Assembly3.Class1 testClass=new Assembly3.Class1();
我也不例外
我只是想知道我做错了什么?如何动态地将程序集加载到项目中。我猜,因为Class1 实例的创建依赖于另一个程序集Assembly1 和Assembly2,所以它失败了。那么,如何将所有依赖程序集动态加载到appdomain/loadcontext。
非常感谢您的回答。
【问题讨论】:
-
在另一个帖子中回复:stackoverflow.com/a/18362459/4997569
-
不是真的!即仅加载 一个程序集 并将其实例化为
type。我已经试过了。但是没有用。我有 多个程序集 加载到“当前上下文”并创建一个实例
标签: c# .net .net-assembly