2011-03-17 17 views
0

我的解決方案中有一個項目,旨在提供一些核心功能。它的命名空間是MyCompanyName.ProductName.FunctionSet。目前,這個項目包括兩個班級; customer.cscore.cs。核心類是靜態的並且包含靜態方法EntryPoint()。儘管有'使用'聲明,爲什麼我需要包含部分名稱空間?

我在解決方案中有一個控制檯應用程序。它的命名空間是MyCompanyName.ProductName.TaskMan。我創建了一個對上述核心項目的引用,併爲命名空間添加了using指令。

Main()中的其中一行是Core.EntryPoint();。請注意,它不包含命名空間的任何部分。代碼運行良好。

現在,爲了解決一個錯誤(無法解析符號'EntryPoint'),我需要將行更改爲FunctionSet.Core.EntryPoint();。我需要添加命名空間的最後部分。

爲什麼我需要添加該部分的命名空間?任何想法爲什麼突然停止工作?有什麼我可以做的,省略命名空間部分?如果我堅持這一點,這不是什麼大問題,但我確實想知道如何以及爲什麼。

+0

你可以包含你的'using'語句嗎? – 2011-03-17 17:10:16

+2

我認爲這是因爲它與Core等不同的類相沖突。嘗試給你的引用一個別名,看看是否可行:using fs = MyCompanyName.ProductName.FunctionSet;然後通過fs.Core等訪問它。 – 2011-03-17 17:11:26

+0

我的猜測是,您添加了一個引用到另一個名稱空間,該名稱空間還包含一個名爲Core的類。 (可能是.Net Framework類) – Andrew 2011-03-17 17:13:03

回答

1

編輯:我保留了下面的龐大的位,但我現在不知道它是相關的。

我懷疑其中之一是真實的:

  • 您的命名空間是不太你認爲他們(特別是核心)
  • 您不必使用指令你認爲你的不要

如果你能發佈簡短而完整的程序(只是這兩個類應該足夠了,只是命名空間,使用指令,類聲明和方法 - 無需任何業務邏輯),它應該是很容易整理。


命名空間雖然他們相對於當前的命名空間解決不相using指令解決。例如:

namespace Outer.Inner 
{ 
    class Foo 
    { 
     public static void Bar() {} 
    } 
} 

namespace Outer.OtherInner 
{ 
    class Test1   
    { 
     static void Method() 
     { 
      // Resolved to Outer.Inner.Foo.Bar() 
      Inner.Foo.Bar(); 
     } 
    } 
} 

namespace OtherOuter 
{ 
    using Outer; 

    class Test2 
    { 
     static void Main() 
     { 
      // This is invalid 
      Inner.Foo.Bar(); 
     } 
    } 
} 

有關完整的血淋淋細節,請參閱C#規範的3.8節。

+0

Core.cs的名稱空間是xxx.xxx.Core。一路上我們改了一些東西。我不知道爲什麼我沒有儘早提起這件事。將Core.cs重命名爲Test.cs後,問題變得明顯。謝謝! – DenaliHardtail 2011-03-17 18:11:51

+0

@ SpecialAgent_W436:Core類位於Core命名空間中?這絕對是一個壞主意 - 請參閱http://blogs.msdn.com/b/ericlippert/archive/2010/03/09/do-not-name-a-class-the-same-as-its-namespace-part -one.aspx及後續部分。 – 2011-03-17 18:28:58

+0

是的,這就是發生了什麼事。感謝您的鏈接。 – DenaliHardtail 2011-03-17 18:40:48

0

您是否曾嘗試在文件開頭的using語句中添加函數?

using FunctionSet.Core.EntryPoint 
EntryPoint(); 
相關問題