2012-03-23 68 views
0

C#的命名空間,這可能是一個C#-noob問題...使用從CLI/C++

假設我有以下CLI/C++頭:

​​ 從C#

然後我做以下:

using DotNet; 
V1.X.AClass a = new V1.X.AClass(); 

我得到:

的Program.cs(18,7):錯誤CS0246:類型或命名空間名稱 'V1' 可以 找不到(是否缺少using指令或程序集 參考?)

同樣有:

using DotNet.V1; 
X.AClass a = new X.AClass(); 

計劃。 cs(18,7):錯誤CS0246:找不到類型或名稱空間名稱'X' (您是否缺少使用指令或程序集 參考?)

什麼工作原理是:

DotNet.V1.X.AClass a = new DotNet.V1.X.AClass(); 

或者

using DotNet.V1.X; 
AClass a = new AClass(); 

因此,無論我必須使用完整的命名空間路徑,否則我必須打開所有的路徑來訪問類。我能做些什麼嗎? 我想只能打開它的一部分。

回答

4

所以要麼我必須使用完整的命名空間路徑,要麼我必須打開所有訪問類的路徑。

是的。

有什麼我可以做的嗎?

不是我所知道的。爲什麼你不是只是想要一個使用指令的整個命名空間?這不是最簡單的方法嗎?

請注意,這與C++/CLI無關。同樣是真實的任何源語言是 - 這樣你就可以用C#看看它還有:

namespace DotNet.V1.X 
{ 
    public class AClass {} 
} 
1

由於喬恩斯基特說你必須包括無論是在using陳述或每次引用它在時間上的完整的命名空間碼。我建議將全名稱空間放在using聲明中。

但是,您可以使用using別名實現該語法,但它不會在語法之外添加任何有價值的內容。

using V1 = DotNet.V1; 

... 

    V1.X.AClass a = new V1.X.AClass(); 

此外,如果你使用的是C#3.0或更高版本var關鍵字將只需要你輸入了的賦值右側完整的命名空間。

var a = new DotNet.V1.X.AClass();