在命名空间内放置using语句失败

Tan*_*moy 11 c# namespaces

我试图用stylecop正确设计一些旧代码.它要求将using语句放在里面.它除了一个以外都适用.我已将问题减少到以下代码.

namespace B.C
{
    using System;

    public class Hidden
    {
        public void SayHello()
        {
            Console.WriteLine("Hello");
        }
    }
}

namespace A.B.C
{
    using B.C;

    public class Program
    {
        static void Main(string[] args)
        {
            new Hidden().SayHello();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出了编译错误错误

"无法找到类型或命名空间名称'隐藏'(您是否缺少using指令或程序集引用?)".

如果我使用BC移动; 在命名空间ABC之上,然后它正确构建.Hidden类是由不同的团队开发的,我们无法对其进行修改.

Guf*_*ffa 15

当你在命名空间内时A,B.C实际上就是A.B.C.

使用global::指定要从根本看:

using global::B.C;
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,这种方法无处不在,以逃避名称空间地狱,而不仅仅是在using语句中.(例如`new global :: MyNS.BlahBlah()`) (2认同)