在不同的项目中实现相同的界面

时间:2018-08-24 20:01:23

标签: c# asp.net-core .net-core

我有一个API项目和一个包含接口的类库项目。因此,我有第三个实现接口的项目和一个实现与项目3相同的接口的项目。因此,项目3和4了解项目2。

我的问题是我想通过我的类库项目(第二个)来调用实现,但是该项目不知道实现项目。

如何通过第二个项目调用实施项目?

enter image description here

我的想法是我有很多实现项目,所以我只想创建另一个新项目并实现接口,而不必在项目2中进行太多更改。

我在所有项目中都使用.NET Core 2.0

2 个答案:

答案 0 :(得分:1)

这是经典的“插件”系统。

在项目2(“托管”项目)中定义界面

3和4参考2是为了获得接口定义(也通常是获得托管项目提供的服务)

现在,您需要使主机(2)动态加载插件。

您可以“手动”执行此操作。 =枚举DLL是一个特定目录,然后找到实现接口的DLL。

或者您可以使用各种框架工具来执行此操作。 MEF是众所周知的。在这里查看更多信息Implementing Plugin Architecture - Dynamic DLL loading

答案 1 :(得分:0)

在不知道要完成的工作的情况下很难确切知道应该做什么,但是...

创建一个项目,将其命名为2.a,其中仅包含接口。假设Project 2使用3和4中的实现,则对2.a,3和4进行引用。