【问题标题】:Putting using statement inside the namespace fails将 using 语句放入命名空间失败
【发布时间】:2012-09-20 06:18:05
【问题描述】:

我正在尝试使用 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();
        }
    }
}

这会产生编译错误错误

“找不到类型或命名空间名称‘隐藏’(您是否缺少 using 指令或程序集引用?)”。

如果我将 using B.C; 移动到命名空间 A.B.C 上方,那么它会正确构建。 Hidden 类由不同团队开发,我们无法修改。

【问题讨论】:

  • 也许 B.C 命名空间在命名空间 A.B.C 范围内被错误地评估为 A.B.C?在全局范围内,它不知道任何命名空间,因此首先找到B,而不是假设它是AA.B)中的B

标签: c# namespaces


【解决方案1】:

当您在命名空间A 中时,B.C 实际上将是A.B.C

使用global:: 指定您从根目录查看:

using global::B.C;

【讨论】:

  • 同样值得注意的是,这在任何地方都可以逃避命名空间地狱,而不仅仅是在 using 语句中。 (例如new global::MyNS.BlahBlah()
【解决方案2】:

B.C 与 A.B.C 冲突。您需要将 B.C 重命名为其他名称或使用 global 指定它

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2014-07-13
    • 2016-04-03
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多