如何从Visual Studio 2012中的另一个项目动态加载类?

本文关键字:项目 另一个 动态 加载 Visual Studio 2012 | 更新日期: 2023-09-27 18:12:17

我正在开发一个使用接口(不是ServiceContract接口)来执行一些内部工作的WCF服务。我的目标是通过交付带有实现此接口(和相应web)的类的新dll,在部署后扩展此服务的功能。配置更新).

我只从实现接口的一个类开始。在我的解决方案中,我在一个项目(WCF服务应用程序)中有接口定义的服务,在另一个项目(Windows类库)中实现接口的类。

我使用以下代码来动态加载类(基于调用服务时传递的参数):

InterfaceFoo af = (InterfaceFoo)System.Activator.CreateInstance(AssemblyQualifiedName, ClassType).Unwrap();

当调用这一行时,我得到一个FileNotFoundException, Could not load file or assembly.

我相信上面的代码是正确的,因为我有它在运行时从一个单独的概念证明项目,一旦它被构建和部署工作,DLL被放置在同一文件夹的EXE。我相信我的问题与我如何引用项目有关,或者我在Visual Studio中运行时传递给CreateInstance()方法的变量。

我尝试过的,我仍然得到同样的错误:在WCF服务项目中,我设置了类库项目作为参考。在WCF服务项目中,我添加了一个接口实现类的链接。

我想知道我正在使用的AssemblyQualifiedName和ClassType的值是否在Visual Studio中不起作用,因为它们尚未部署?

任何建议都是感激的,即使你认为一个完全不同的方法更好。

在最初的帖子后添加:发帖后我有了一个想法,我将接口实现类从类库项目移到了WCF服务项目中。当我这样做的时候,它是有效的。对我来说,这消除了程序集和类型参数作为问题,问题是我没有正确链接到类库项目。

如何从Visual Studio 2012中的另一个项目动态加载类?

你可以把你的接口定义移到另一个共享库(dll)中,然后使用它