奇怪的C#命名空间问题
我有包含其中的一个内有若干命名空间和多类项目 - >奇怪的C#命名空间问题
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的命名空间问题,并解决了它。
这必须与Visual Studio/csc中的C#尝试解析引用的方式有关。这样看来它是这样的:相对于调用对象
- 看,如果没有找到这样的命名空间,尝试查找参考,仿佛这是绝对
在我的情况下,在我添加Some.Namespace.Some.Namespace.NewClass
之前,当VS尝试将Some.Namespace.ExistingClass
的引用解析为Some.Namespace.Constants.Enum
时,它首先尝试进行相对名称空间查找(从ExistingClasse的Some.Namespace
开始),未找到这样的名称空间。然后它尝试绝对查找并找到它。
在我加入Some.Namespace.Some.Namespace.NewClass
之后,它找到了命名空间,注意到对象不在那里,并决定停止搜索。
内Some.Namespace.Some.Namespace类将尽力解决Some.Namespace.Constants.Enum 为:Some.Namespace.Some.Namespace.Constants.Enum,不一些。 Namespace.Constants.Enum。
如果您试图将枚举引用为:global :: Some.Namespace.Constants.Enum,它会起作用。
很好的明确答案时,它总是很清楚,这并不能回答我最初混淆的问题。我清除了我的问题。 – Dlongnecker 2010-12-15 20:35:16
你是说现在它可以工作,而你只是想知道它为什么发生,或者它仍然不能与固定的命名空间一起工作? – 2010-12-15 20:22:15
现在工作,只是想知道为什么 – Dlongnecker 2010-12-15 20:30:23
我很难理解你所描述的所有类型和名称空间之间关系的文章。如果你只是给我们一些问题的回应?代码是什么样的? – 2010-12-15 21:48:25