需要来自另一个 dll 的类作为 API 的输入

本文关键字:API 输入 dll 另一个 | 更新日期: 2023-09-27 18:33:08

我有 3 个 C# 项目:A、B 和 C.B 引用 C 和 A 引用 B (A -> B -> C(。B 是 A 的 API,C 为 B 做一些较低级别的工作。

B 向 A 公开一些公共方法,这些方法当前需要 C 中的类作为输入。有没有办法让 A 能够在不直接引用 C 的情况下创建所需类的实例?

B 在其 API 中要求来自 C 的类不好吗?在 B 中创建一个镜像 C 类的类,以便 B 只公开完全依赖于自身的 API,会更好吗?

需要来自另一个 dll 的类作为 API 的输入

"有没有办法让 A 能够在不直接引用 C 的情况下创建所需类的实例?">

如果你想让A知道它正在做什么,那就不行了。当然,你可以让 A 调用 B 来创建他们都知道的某个接口的实例,该实例由 C 中的类实现。

"对于 B 来说,在其 API 中要求 C 类不好吗?">

坏在什么方面?在各种库中肯定有这样的先例,包括 .NET 本身。对我来说,这似乎并不坏,它可能是解决涉及循环引用的最佳方法(并不是说这在您的场景中有问题,但它确实出现了,这是一种解决它的方法(。

"在 B 中创建一个镜像 C 类的类会更好,这样 B 只公开一个完全依赖于自身的 API?">

有时有充分的理由创建此类代理对象,但这样做的唯一目的是从一个 DLL 中隐藏另一个 DLL 中的类型?不,我不明白这有什么好。如果你想完成这样的事情,正确的方法是声明一个接口,由 A 和 B 知道,并由 C 中的类实现。