【发布时间】:2016-12-19 17:11:08
【问题描述】:
我正在寻找最简单的解决方案,以允许我们的 .Net EXE 调用由第 3 方提供的 DLL。这就是问题所在 - DLL 在我们的代码中调用对象。
.Net 中的一个优点是 EXE 可以用作其他项目中的程序集,就像它是一个 DLL。我最初的想法是让他们将我们的 EXE 导入到他们的项目中,然后在其中调用函数。
我模拟了它,它运行良好,但客户不希望它以这种方式运行,他们希望运行 我们的应用程序并让它调用 他们的代码,最好在 DLL 中提供。
现在,如果他们的代码不调用我们的代码,这将是微不足道的,但在我尝试制作一个模拟它的项目时,我总是遇到循环引用问题。我知道我可以通过运行时支持避免所有这些,但也许我错过了一个更简单的解决方案?
【问题讨论】:
-
好吧。您可以将客户需要从他们的代码中调用的部分提取到另一个库项目(dll)中。此 dll 公开您的客户可以用来交互的接口。您的 exe 链接相同的 dll。所以你有:你的 exe 引用接口库,客户代码引用接口库。例如,您的接口库可以有一个用于直接与您的应用程序交互的单例。另一方面,您可以编写一个简单的服务,从工作目录中实现接口的所有 dll 加载所有类。
-
所以基本上是一个三角形,我们的大部分代码在一个 DLL 中,它们的代码在另一个 DLL 中,并且两者都有一个包装器?
-
不,你不需要包装两者。这可能太长了,无法发表评论。我会尝试用答案重新解释:-)
标签: .net dll circular-reference