2013-02-15 81 views
1

我有我的解决方案库中的项目,我只是说,每当我需要引用类/枚举我必须使用:使用问题,为什么我必须使用使用global :: MyName.SubName?

using global::MyName.SubName;

(ReSharper的自动提示这一点)

为什么这是?为什么我不能这样做:

using MyName.SubName; 

哪一个不行。甚至当它这样做,我得到这个错误:

Error 400 Member 'MyName.SubName.Enumerations.SomeEnum.SomeEnumName1' cannot be accessed with an instance reference; qualify it with a type name instead 
+0

一个更有意义的语法,你可能有一些不确定性,因为一个或多个具有相同名称的类型与其他命名空间。你使用了什么其他的命名空间? – 2013-02-15 17:11:54

+0

@ user1361315我的评论有帮助吗?这有没有解决? – Kelsey 2014-01-22 19:37:08

回答

0

我只能假设你MyName.SubName是HID(同名)的东西。

详情参见下面的MS文章:How to: Use the Global Namespace Alias

我认为这说明你碰到的场景。

The ability to access a member in the global namespace is useful when the member might be hidden by another entity of the same name.

...

However, in larger projects, it is a very real possibility that namespace duplication may occur in one form or another. In these situations, the global namespace qualifier is your guarantee that you can specify the root namespace.

+0

所以我有2个项目:MyProject.Web和我创建的新项目是MyProject.Common。 MyProject.Web中没有任何其他名称空间中包含“common”一词,因此很困惑。当我探索代码/名称空间时,我也没有看到任何冲突。 – loyalflow 2013-02-15 20:00:56

+0

@ user1361315您可能与框架中的其他内容冲突。编译器无法弄清楚你指的是什么,所以这应该是原因。静态类/方法也可以创建类似的行为,但我认为这不是这种情况。 – Kelsey 2013-02-15 21:27:00

0

我同意@kelsey,它看起来像一个命名空间冲突。解决它的另一种方法是使用命名空间别名,如;

using MNSub = MyName.SubName 

// ...else where in code 
MNSub.MyType varName = new MNSub.MyType(); // etc. 

这至少给比global::...

相关问题