2011-06-09 49 views
3

我遇到了......我不认为我会把它称为一个问题,就像我会怪癖一样。它让我困惑和困惑。为什么我需要global :: here?

我正在将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)

它工作得很好。所以显然有一个命名空间冲突。我不明白的是为什么?我有从来没有之前遇到过这个。这对我来说似乎是绝对最奇怪的事情。

回答

5

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

+0

我明白了。我在同一个命名空间中有一个名为'Ninject'的静态类,它无法确定我是在调用静态类还是原来的根名称空间。这是有道理的,我没有考虑过。 – Ciel 2011-06-09 13:06:52

4

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

发生此错误的原因是C#编译器通过尝试在当前名称空间内查找它们并在其向全局名称空间工作时查找类型和名称空间(如果它不能)。