C#.NET 命名空间名称在命名空间错误中不存在 - 仅当使用在本地命名空间指令之外时 - 为什么?

标签 c# .net namespaces

使用 .NET 2.0、C#、Windows Forms 开发、Enterprise Library 3.1。

我们有一个项目命名空间(称之为项目)。我们在该项目中还有几个子命名空间,例如 Project.Namespace1、Project.Namespace2 等。

在一个类中,我们定义枚举等与企业库日志 block 一起使用,如下所示:

namespace Project.Logging
{
  public static class Logging
  {
    public enum LogPriority
    {
      // enum values here
    }
  }
}

在另一个类中,我使用了枚举值,所以我需要声明一个 using 语句。相同的项目,所以没有程序集可供引用,对吗?

如果我在本地命名空间内部声明 using,就像这样,它工作正常:

namespace Project.SomeName
{
  using Project.Logging;

  // code referencing the Logging enum
}

但是,如果我将 using 语句放在本地命名空间声明之外,我会得到“类型或命名空间名称‘LogPriority’在命名空间‘Project.Logging’中不存在...像这样:

using Project.Logging;

namespace Project.SomeName
{
  // code referencing the Logging.LogPriority.whatever
}

这是为什么?以前有人遇到过这个吗?

最佳答案

我以前在使用与其命名空间同名的类时遇到过类似(尽管不完全相同)的问题。

奇怪的是,它似乎在一些开发人员的电脑上编译正常,但在其他人的电脑上却不行。最后,我们确保没有命名空间包含同名的类。

namespace Project.Logging
{  
  public static class Logging  // this is what caused the probems for me
  {   

  }
}

关于C#.NET 命名空间名称在命名空间错误中不存在 - 仅当使用在本地命名空间指令之外时 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765277/

相关文章:

c# - 从多个线程写入 bool 变量在 C# 中安全吗?

javascript - 重载属性有什么用?

c# - 为什么在 C# 中添加多个 double 时顺序会影响舍入

c# - .NET Core - Selenium RemoteWebDriver - PlatformNotSupportedException

networking - 无法在 ubuntu 18.04 上运行多个 dnsmasq dhcp 服务器

通过命名空间重用 C# 代码

c# - SSIS 跨进程通信有哪些选项?

c# - 以编程方式将多个 SQL 列组合并存储到一个列中

c# - 如何刷新通过 Azure 身份验证收到的访问 token ?

jsf - 命名空间为 http ://xmlns. jcp.org/jsf/html 的元素可能没有命名空间 http ://xmlns. jcp.org/jsf 中的属性