【发布时间】:2020-05-27 19:07:32
【问题描述】:
我们有两个应用程序,每个应用程序都编译自己的代码,其中一些代码是共享的(主要是与数据相关的)。将此设计拆分为三个命名空间并尝试强制命名空间 Foo 永远不会导入命名空间 Bar 但两者都可以导入命名空间 Shared,这感觉很自然。
然而,Foo 和 Bar 之间的一个类从裂缝中溜走了,尽管强制执行,但有人在 Foo 中引用了一个来自 Bar 的类。
这让我想知道 C# 编译器是否实际处理这个问题?在我看来,可能会发生以下两种情况之一。
我似乎找不到任何关于 usings 和 namespaces 如何编译的文档。似乎命名空间只是为开发人员组织代码,而不是编译器。然而他们提供了范围......所以我想#2适用吗?如何测试这个?
【问题讨论】:
-
您将代码编译成程序集,而不是命名空间。如果这些程序集包含对其他程序集的引用,它们本身不会改变。这是一个参考,而不是参考代码的副本。
-
您是如何尝试执行此操作的?
-
在人际层面而非技术层面强制执行。
标签: c# compilation namespaces