C#动态加载程序集

时间:2014-03-18 20:03:16

标签: c# dynamic load assemblies

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

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 Event)复制到每个客户项目的输出路径都在同一个解决方案中。

现在我的问题 - 这种方法有效,但我宁愿不必记住每次创建新的具体实现时都将这些添加到我的所有客户端项目中。

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

1 个答案:

答案 0 :(得分:0)

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