2012-03-23 34 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();