[C#] 命名空間和類具有相同的名稱?


Answers

CA1724: Type Names Should Not Match Namespaces ...

基本上,如果你按照代碼分析進行正確的編碼,這個規則就不會做你正在做的事情。 代碼分析對於幫助您發現潛在的問題非常有用

Question

我正在組織一個圖書館項目,並且有一個名為Scenegraph的中央管理器類,以及一些存在於Scenegraph命名空間中的其他類。

我真的很喜歡MyLib.ScenegraphMyLib.Scenegraph ,而其他類是MyLib.Scenegraph.* ,但似乎唯一的方法是使所有其他類的Scenegraph內部類在Scenegraph.cs文件,這太笨拙了。

相反,我已經組織它作為Mylib.Scenegraph.ScenegraphMyLib.Scenegraph.* ,這種工作,但我發現Visual Studio在某些情況下,我是否指的是類或命名空間混淆。

有沒有一種很好的方法來組織這個軟件包,這樣對於用戶來說,不用把所有的代碼拼湊在一起,都是不方便的。




只要加我2分錢:

我有以下課程:

namespace Foo {
    public struct Bar {
    }
    public class Foo {
        //no method or member named "Bar"
    }
}

客戶是這樣寫的:

using Foo;

public class Blah {
    public void GetFoo( out Foo.Bar[] barArray ) {
    }
}

原諒錯誤GetFoo不返回輸出而不是使用out參數,編譯器無法解析數據類型Foo.Bar []。 這是返回錯誤:無法找到類型或命名空間Foo.Bar。

看來,當它試圖編譯它解析Foo作為類,並沒有發現類Foo中嵌入類Bar。 它也找不到名為Foo.Bar的名稱空間。 它沒有在名字空間Foo中尋找一個類Bar。 名字空間中的點不是句法。 整個字符串是一個標記,而不是由點劃定的單詞。

這種行為是由VS 2015運行.Net 4.6展示的