在Visual Studio 2017中我有一个aspnet核心项目的解决方案和大约10个相互引用的网络核心库。
其中一个库是xUnit测试项目。它引用了另一个应该用作测试目标的项目。
例如我有:
Project: MyProject.Domain
Test Project: MyProject.Domain.Tests
MyProject.Domain.Tests引用了MyProject.Domain。
在这些项目中,我有类名为项目名称的类。 所以当我可以使用MyProject.Domain中的公共类而不使用MyProject.Domain时,会发生奇怪的事情。
有人可以解释一下吗?
答案 0 :(得分:1)
如果我理解正确,您就会想知道为什么命名空间MyProject.Domain.Tests
中的类型可以访问命名空间MyProject.Domain
中的类型而没有任何using
。原因是规范说明了这一点。来自Namespace and type names(通过删除不相关的部分进行编辑):
namespace_or_type_name 的含义确定如下:
- 如果 namespace_or_type_name 的格式为
I
:
- 对于每个名称空间
N
,从 namespace_or_type_name 所在的名称空间开始 发生,继续每个封闭的命名空间(如果有的话),然后结束 使用全局命名空间,将评估以下步骤,直到a 实体位于:
- 如果
N
包含名称为I
的可访问类型,则:
- namespace_or_type_name 指的是类型。