我有一个包含多个命名空间的项目,其中一个包含其中一个类 - >
Some.Namepsace. (namespace)
ExistingClass (class)
ExistingClass2 (class)
Constants (class)
.Enum (enum)
在这个项目中,我创建了一个类,但是具有不正确的命名空间,如此
namespace Some.Namespace.Some.Namespace
{
public class NewClass {}
}
现在 Some.Namespace.ExistingClass 无法解析对 Some.Namespace.Constants.Enum 的引用 - 它似乎在寻找Some.Namespace.Some.Namespace。 Constants.Enum。
知道为什么吗? NewClass 不引用任何内容,并且没有被任何引用,所以我看不到它的命名空间如何影响任何其他组件。我修复了 NewClass 上的命名空间问题,并修复了它。
答案 0 :(得分:5)
Some.Namespace.Some.Namespace 中的一个类将尝试解析 Some.Namespace.Constants.Enum as: Some.Namespace.Some.Namespace.Constants.Enum ,而不是 Some.Namespace.Constants.Enum 。
如果您尝试将Enum引用为: global :: Some.Namespace.Constants.Enum ,它将起作用。
答案 1 :(得分:0)
这必须与visual studio / csc尝试解析引用的方式有关。它似乎是这样的:
就我而言,在我添加Some.Namespace.Some.Namespace.NewClass
之前,当VS尝试将引用从Some.Namespace.ExistingClass
解析为Some.Namespace.Constants.Enum
时,它首先尝试进行相对命名空间查找(从ExistingClasse的{{1开始) }},找不到这样的命名空间。然后它尝试绝对查找并找到它。
在我添加Some.Namespace
之后,它找到了命名空间,发现对象不存在,并决定停止搜索。