[英]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.