2011-11-16 171 views
1

我的解決方案中有一個類EventArgs(Of T)
此課程位於命名空間Acme.Infrastructure.Interface中。
命名空間System中存在與EventArgs同名的類。vb.net系統名稱空間與兄弟名稱空間衝突

在我的解決方案的另一個項目我有一個類Acme.BusinessModules.MyModule.MyClass
當嘗試使用EventArgs類我有完全限定類名或編譯器認爲我現在用的是System.EventArgs類。

我對命名空間解析的理解是編譯器會首先在當前命名空間中查找類,然後查找其父類。看起來編譯器在檢入兄弟命名空間之前檢查System

在兄弟姐妹之前檢查System是否正確?或者是由其他問題導致的這種行爲(Imports order?)?

回答

0

看所涉及的命名空間:

  • Acme.BusinessModules.MyModule
  • Acme.Infrastructure.Interface

沒有理由爲什麼在Acme.BusinessModules.MyModule編譯類時,編譯器會看在Acme.Infrastructure.Interface。現在如果你寫的代碼是在Acme.Infrastructure.Interface.SomethingElse那麼這將是一個不同的問題 - 但在這裏看起來像編譯器是絕對正確的事情。兩個命名空間都以Acme開頭的事實既不在這裏,也不在這裏。

正如你自己所說:

My命名空間分辨率的理解是,編譯器會首先查找當前命名空間中的類,然後將其父母。

這裏的祖先命名空間是Acme.BusinessModulesAcme - Acme.Infrastructure.Interface

我也強烈勸你創建的類名與那些System衝突。這真的只是在問問題。

+0

好吧,這只是我對命名空間系統的誤解,於是有時間做一些閱讀。 同名的班級由SCSF創建! – ArturPhilibin

+0

@DaSilva_Ireland:我從來沒有使用SCSF,但是你應該*絕對*看看你是否可以禁用這個類的生成(或者如果它是一次性的話就刪除它)。這隻會讓你痛苦。 –

相關問題