1

我刚刚添加的解决方案中有一个库项目,每当我需要引用一个类/枚举时,我必须使用:

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  
4

2 回答 2

0

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

using MNSub = MyName.SubName

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

这至少给出了比global::...

于 2013-02-15T17:34:20.890 回答
0

我只能假设您MyName.SubName被其他东西隐藏(同名)。

有关详细信息,请参阅以下 MS 文章: 如何:使用全局命名空间别名

我认为它解释了您遇到的情况。

当成员可能被另一个同名实体隐藏时,访问全局命名空间中的成员的能力很有用。

...

但是,在较大的项目中,命名空间重复很可能以一种或另一种形式发生。在这些情况下,全局命名空间限定符是您可以指定根命名空间的保证。

于 2013-02-15T17:13:58.873 回答