c# - 在不同的项目中实现相同的接口(interface)

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

我有一个 API 项目和一个包含接口(interface)的类库项目。所以我有一个实现接口(interface)的第三个项目和一个实现与项目3相同接口(interface)的项目。因此,项目3和4知道项目2。

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

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

enter image description here

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

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

最佳答案

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

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

3和4引用2以获取接口(interface)定义(通常也是获取托管项目提供的服务)

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

您可以“手动”完成此操作。 = 枚举特定目录下的DLL并找到实现接口(interface)的DLL。

或者你可以使用各种框架来完成它。 MEF 是众所周知的一个。在这里查看更多信息Implementing Plugin Architecture - Dynamic DLL loading

关于c# - 在不同的项目中实现相同的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011004/

相关文章:

c# - 在 VS 2017 中的预构建事件中使用 protoc 从 .proto 文件生成 c# 文件

c# - 在 C# 中实现 JS Eval

c# - 从 .net 核心中的实体(不使用 Entity Framework 迁移)更新数据库架构

asp.net-core - AKKA.NET 在 ASP.NET 中还是在控制台应用程序中?

c# - 混合 web api 操作和非 api 操作相同的 Controller asp.net 核心

c# - 为什么 MSHTML for .Net 没有 querySelector 和 querySelectorAll,或者它们在哪里?

c# - 使用C#将DateTime从UTC转换为用户提供的时区

c# - 使用 Dapper 启用多个事件结果集

c# - 在服务之间共享 HttpClient

.net - .NET : The specified data could not be decrypted only for a specific URL 中非常奇怪的 SSL 错误