动态加载程序集

本文关键字:程序集 加载 动态 | 更新日期: 2023-09-27 17:50:54

我有一个解决方案,其中有许多具体的实现,每个实现都在它们自己的类库中实现,它们都实现了我构建的四个主要接口之一。我还为每个接口创建了一个工厂对象,以便动态加载所请求的对象。例如

public static IDataIngestorFormat GetDataIngestionFormat(string typeName, IDataIngestor di)
{
        Type format = Type.GetType(typeName);
        object formatInstance = Activator.CreateInstance(format, di);
        IDataIngestorFormat instance = formatInstance as IDataIngestorFormat;
        return instance;
} 

一切都像预期的那样工作,直到我谈到这些对象的使用。我对每个接口和具体对象以及WCF REST服务和需要访问的API层都有一些单元测试项目,但是在CreateInstance上将失败,除非我将具体对象(带有Post Build事件)复制到每个这些客户端项目的输出路径中,这些项目都在同一解决方案中。

现在对于我的问题-这种方法是有效的,但我不希望每次创建一个新的具体实现时都要记住将这些添加到我的所有客户端项目中。

是否有一种简单的方法来实现这一点,或者我将不得不记得每次我添加一个新的具体实现时访问我所有的客户项目?

动态加载程序集

如果您可以使用命名约定来保证每个客户端程序集和相关单元测试程序集的唯一名称,那么只需更改构建输出路径,以便所有内容都构建到顶级构建目录