2011-06-09 51 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#編譯器通過嘗試在當前名稱空間內查找它們並在其向全局名稱空間工作時查找類型和名稱空間(如果它不能)。