簡體   English   中英

從CLI / C ++類在C#中使用名稱空間

[英]using namespace in C# from CLI/C++ class

這可能是C#-noob問題...

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

namespace DotNet {
  namespace V1 {
    namespace X {


      public ref class AClass {
      public:

        AClass() {}
        void foo() {}

        static void bar() {}
      };
    }
  }

}

然后從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();

Program.cs(18,7):錯誤CS0246:找不到類型或名稱空間名稱“ X”(是否缺少using指令或程序集引用?)

起作用的是:

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

要么

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

因此,要么我必須使用完整的名稱空間路徑,要么必須打開所有路徑以訪問該類。 有什么我可以做的嗎? 我只希望打開其中的一部分。

因此,要么我必須使用完整的名稱空間路徑,要么必須打開所有路徑以訪問該類。

是。

有什么我可以做的嗎?

不是我知道的。 為什么你會不會只想使用指令整個命名空間? 這不是最簡單的方法嗎?

請注意,這與C ++ / CLI沒有關系。 不論源語言是什么,都一樣-因此您也可以使用C#進行查看:

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

正如Jon Skeet所說,您必須在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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM