2016-01-14 65 views
2

我一直在尋找了一段時間語句現在看我怎麼能執行我的C#項目,有完整的命名空間路徑。強制執行完整的命名空間使用在C#

例如,如果X類的命名空間是Foo.Bar.Car.Dealer,那麼在視覺工作室中做Ctrl+.時,它有時會放置像using Car.Dealer這樣的語句;這特別成爲多個項目解決方案的問題。我一直在尋找StyleCop規則或可能幫助我完成這一任務的東西。

任何幫助或想法?

編輯

上面的語句成立只有在使用類下相同的命名空間前綴下降。下面是完整的代碼示例:

文件:X.cs

namespace Foo.Bar.Car.Dealer { 
    class X {} 
} 

文件:UsingClass.cs

namespace Foo.Bar.Another.ClassPath { 
    using Car.Dealer; 
    class UsingClass { 
    private X _x; 
    } 
} 

的VS挑using Car.Dealer,但我想用Foo.Bar.Car執行。經銷商

+0

咄我只注意到我的問題是不完整的,所以我修飾的例子。 – MaX

+0

隨着解決方案增長到多個項目,它會導致命名空間衝突 – MaX

+0

是的,原始問題構成的問題似乎並不是你真正的問題:)。我不知道,我能想到的是創建代碼,以完整的命名空間追加到一組特定的類(比方說,那些標有您所選擇的自定義屬性)。就像我在我的「答案」 – Veverke

回答

0

我不知道之前的版本2012,但隨後對在即將跨過未知類型的客人可使用d既增加了命名空間彈出行動圖標或者僅僅爲全名字空間引用的類型加上前綴。

如果你不想通過使用指令(這看起來像using Foo.Bar.Car.Dealer;)添加命名空間,

然後在您的例子中,你只需要引用您的類型XFoo.Bar.Car.Dealer.X

例子:

//assuming your X type is instantiable 
Foo.Bar.Car.Dealer.X myX = new Foo.Bar.Car.Dealer.X(); 
+0

我想要一個編譯時間規則來執行此操作。 – MaX

+0

也許你可以使用T4創建一個模板?這將超過特定的類型,並使用反射,將完整的名稱空間附加到每個引用? – Veverke

+0

同樣是一件好事,強制執行的編譯時間,而不是IDE工具,或模板生成的東西。 – MaX