我得到的問題是「命名空間被用作一種」在C#項目。我明白了爲什麼會發生,我明白我需要做些什麼來解決它。但對我來說沒有意義,所以這裏的問題是理解C#上下文中名稱空間和類的設計。命名空間和類 - 解決命名歧義
我希望這個問題是來自其他足夠的不同,因爲我不問如何解決問題,而是如何保持邏輯和相關的命名,而以應對時局,我形容它。
我按照MSDN約定命名的解決方案。所以我有一個解決方案稱爲:
TesterStories.Voxam
我有兩個項目中。一個是TesterStories.Voxam.App
,看起來像這樣:
namespace TesterStories.Voxam.App
{
TesterStories.Voxam.Parser parser = new TesterStories.Voxam.Parser();
class Program
{
}
}
的問題是在第三行。
大概是因爲我有另一個項目叫TesterStories.Voxam.Parser
,它看起來像這樣:
namespace TesterStories.Voxam.Parser
{
public class Parser
{
}
}
因此,它是說,它不喜歡,我有「分析器」以我命名的項目?
但根據MSDN準則,如果解析器是特徵,那就是我要呼籲的命名空間:[Company].[Project].[Feature]
。班級是Parser
,因爲畢竟這是班級的職責。
所以它看起來像什麼,我要做的是:
namespace TesterStories.Voxam.Parser
{
public class Xyzzy
{
}
}
所以在這裏我改變了我的Parser
類Xyzzy
類。現在,回到我的文件,該文件是造成問題,我可以做到這一點:
using TesterStories.Voxam.Parser;
namespace TesterStories.Voxam.App
{
class Program
{
Xyzzy parser = new Xyzzy();
}
}
所以我得到它 - 但它意味着我必須改變我的課是什麼不是。我意識到我可以稱之爲AppParser
或ParserApp
或其他什麼。
在這種情況下,什麼開發商往往辦?你改變你的名字空間還是你改變了你的班級?雖然,在我的情況,我所描述的功能,按照MSDN準則和正確的命名基於它做什麼類)。
好吧,我得到的第一部分。關於第二部分(在你的「或」之後),如果我在我的文件中使用了'TesterStories.Voxam.Parser;'並且執行此操作:'Parser parser = new Parser();'工作。我得到'Parser是一個名字空間,但是像一個類型一樣使用'。 我只是想確保我不會誤讀你的第二部分。但是,我再次看到你的第一部分的重點。 –
啊,但我可以這樣做:'Parser.Parser parser = new Parser.Parser();'有趣。從Java背景來看,這對我來說是一種認知摩擦。我仍然覺得我必須命名它不是的(在某種程度上),所以我不必重複(「Parser.Parser」)。但是,這是我的問題,而不是其他人的問題!感謝您的答覆。 –
@JeffNyman看看答案的編輯是否有幫助(因爲你不應該重複「Parser.Parser」)。 –