2010-09-02 48 views
0

在Visual Studio 2008解决方案中,我在两个不同的命名空间中有两个相同类的版本。我可以隐藏C#中全局名称空间中的类吗?

在VB中,如果我这样做:

imports MyNamespace 
' ... 
dim x as DuplicatedClass = new DuplicatedClass() 

它使用MyNamespace.DuplicatedClass而不是全局命名空间DuplicatedClass。同时,在C#中,执行此操作:

using MyNamespace; 
// ... 
DuplicatedClass x = new DuplicatedClass(); 

使用全局名称空间DuplicatedClass。要使用其他版本,我必须使用MyNamespace.DuplicatedClass

我意识到这是一个有问题的设置,但我无法改变它。有没有办法阻止C#看到全局命名空间类,或者专门卸载它,或者...?鉴于全局名称空间中有多少个类,每次都被迫选择名称空间会花费相当多的时间。

+0

这些类是否在单独的程序集中定义? – 2010-09-02 19:21:14

回答

3

也许你能做到的最好的就是创建一个使用别名:

//create alias 
using defDuplicatedClass = MyNamespace.DuplicatedClass; 

defDuplicatedClass x = new defDuplicatedClass(); 

别名是文件作用域。所以你必须根据需要在每个文件的顶部重复它,但是也许这比每次发生DuplicatedClass时重复命名空间都要好。

+0

链接到示例文章:http://msdn.microsoft.com/en-us/library/c3ay4x3d(VS.80).aspx – 2010-09-02 19:27:17

+0

这很好用,谢谢!不知道别名功能。显然它不能覆盖全局命名空间类,但这是完全可以接受的。 – Groxx 2010-09-02 19:52:23

相关问题