【发布时间】:2018-05-15 15:12:49
【问题描述】:
单行问题没有意义,所以让我详细说明我的挑战:
我创建了 3 个 DLL(MyUtils、MyConnector、MyAgent),每个都包含自己的一组“内部”类、类型和成员。所有的类、类型和成员都是它们各自的默认命名空间(与它们的程序集名称相同)。
-
MyAgent 需要添加对 MyConnector 的引用并使用它的一些类。 MyConnector 需要添加对 MyUtils 的引用并使用它的一些类。 就目前而言,MyAgent 可能还需要访问 MyUtils 中的某些类型。
现在,由于 MyUtils 中的所有类型和成员都是内部的,我无法将其添加为对 MyConnector 的引用,同样从 MyConnector 到 MyAgent。我不想公开这些类型中的任何一个,因为我不希望使用我的 DLL 的应用程序直接访问它们。
我了解理论上可以将命名空间跨越多个程序集,但不清楚如何实际实现上述场景。
最后,我只想部署 MyAgent.dll 以在 EXE 中使用。该 EXE 应该只能访问 MyAgent 中的公共类型,但有一个例外:MyConnection 对象(包含在 MyConnector 中的类型)将从 MyAgent 方法返回。在这里,我的访问说明符(内部)再次限制了这种可能性。
我一直在想太多,以至于我现在完全糊涂了。非常感谢有经验的程序员的一些指导。
提前致谢。
【问题讨论】:
-
这不是您问题的解决方案,但我质疑没有公共类型的实用程序程序集的价值。您能否详细说明为什么您希望实用程序类型保留在内部?
-
也许我不是很清楚。最后一个 dll (MyAgent) 也有公共类型,这些是 exe 会调用的类型。但我需要隐藏包含支持实现的所有其他程序集的实现细节。将这些公开不仅会给智能列表添加不必要的噪音,而且还会鼓励和鼓励 exe 开发人员玩弄他们不应该玩的东西。
-
无论如何,我想我已经找到了一种方法来实现我想要的,只是在应该公开多少方面做出了一些妥协。所以我正在考虑解决这个问题,并会问一个我遇到任何新障碍的新问题。感谢您的宝贵时间。
标签: c# dll namespaces exe