为什么我需要global :: here?

时间:2011-06-09 13:00:40

标签: .net namespaces ninject

我遇到过......我不认为我会把它称为问题,就像我想要的那样。它让我感到困惑和困惑。

我正在为我的网站添加Ninject。它工作正常。没有专门针对Ninject进行故障排除的问题,但我在设置模块时遇到了这个问题......

这是我的SessionModule.cs文件。

namespace Lightcast.Web.Mvc.Injection.Modules {
    public class SessionModule : Ninject.Modules.NinjectModule {

        public override void Load() {
        }
    }
}

此屏幕截图中也显示了这一点。

SessionModule.cs

我收到错误

  

Lightcast.Web.Mvc.Injection.Ninject

的未知类型“模块”

现在,如果我将其更改为此...

SessionModule.cs(2)

它运作得很好。显然存在命名空间冲突。我不明白的是为什么?我以前从未遇到过这个。这对我来说似乎是绝对奇怪的事情。

2 个答案:

答案 0 :(得分:5)

原因似乎是在项目的某个位置存在一个名为Lightcast.Web.Mvc.Injection.Ninject的命名空间或类型,它隐藏了全局NInject命名空间。

答案 1 :(得分:4)

在名称空间Ninject或其父名称空间之一的某处有一个名为Lightcast.Web.Mvc.Injection.Modules的类或命名空间。

发生错误是因为C#编译器通过尝试在当前命名空间内查找它们并查找全局命名空间来查找类型和命名空间,如果不能的话。