有些情况在开发一个C#框架的时候,要用到反射加载另外程序集,这是必然考虑的事情。这样做的好处就是多个工程同时作业的时候,可以互不干扰,替换DLL文件即可。
Assembly.Load();这个方法只能加载项目引用的程序集,如果其中一个DLL文件变更了,我们还得替换整个DLL,并没有真正实现分离。
Assembly.LoadFrom();可以加载程序外的DLL文件,并且随时替换。
前些日子,在用到Assembly.LoadFrom()加载DLL的时候,用相对路径找到了DLL文件,可是Invoke后的实例,总是转换不了类型:
1 object uocInstance = uocConstInfo.Invoke(new object[]{ }); 2 3 IEvent uocEvent = uocInstance as IEvent;
尝试了很多方法,比较了Assembly.Load();和Assembly.LoadFrom();同时加载的后的实力,看似完全一样的结果。
最后的解决方案是,把DLL文件放到Debug\bin\目录下,可以正常运行,发布也没有问题。
Assembly.LoadFrom() 方法加载程序集,无法转换类型
原文:http://www.cnblogs.com/hehongtao/p/5098169.html