C# 在不同的项目中实现相同的接口

C# 在不同的项目中实现相同的接口,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我有一个API项目和一个包含接口的类库项目。所以我有一个实现接口的第三个项目和一个实现项目3相同接口的项目。因此,项目3和项目4了解项目2 我的问题是我想通过类库项目(第二个)调用实现,但是这个项目不知道实现项目 如何通过第二个项目调用实现项目 我的想法是我有很多实现项目,所以我只想创建另一个新项目并实现接口,而不必在项目2中对代码进行太多更改 我在所有项目中都使用.NET Core 2.0这是一个经典的“插件”系统 在项目2中定义接口(“托管”项目) 3和4参考2,以获得接口定义(也通常用于

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

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

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

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


我在所有项目中都使用.NET Core 2.0这是一个经典的“插件”系统

在项目2中定义接口(“托管”项目)

3和4参考2,以获得接口定义(也通常用于获得托管项目提供的服务)

现在需要让主机(2)动态加载插件

您可以“手动”完成此操作枚举DLL是一个特定的目录,并查找实现interfce的DLL


或者,您可以使用各种FrameWorks来执行此操作。MEF是一个众所周知的公司。在这里查看更多信息,如果不知道你要完成什么,就很难确切地知道你应该做什么,但是


创建一个只包含接口的项目,称之为2.a。假设Project2同时使用了3和4中的实现,它会删除2.a、3和4中的引用。

您做错了什么。具有抽象的程序集永远不应该关心实现不太确定,但是你在寻找像Ninject这样的依赖注入吗?@maccettura我的第二个项目需要知道实现接口的所有项目吗?@Alberto包含抽象的程序集应该可以被实现这些接口的程序集访问,但不能反过来。即使你想这样做,你也做不到,因为这是一个“循环依赖”。我们需要更多的细节和具体的例子才能提出替代方案approach@Alberto您需要仔细阅读依赖注入和IOC容器。您的Web API程序集应该引用抽象程序集和实现程序集。在WebAPI项目中,您将使用IOC容器将具体实现映射到抽象。我认为这根本不是正确的方法。OP只需要加强他们的依赖注入能力并选择一个IOC容器。如果OP需要同时激活3和4,那么IOC通常不是正确的方法。