【问题标题】:Naming the Namespace命名命名空间
【发布时间】:2009-11-20 19:38:57
【问题描述】:

我在试图弄清楚如何正确命名我的命名空间时遇到问题。我的命名空间目前是:

<CompanyName>.<ProductName>.Configuration

但是,使用“配置”与:

System.Configuration

更糟糕的是,我还有一个名为 ConfigurationManager 的类。我知道我可以将其更改为:

<CompanyName>.<ProductName>.<ProductName>Configuration

但这似乎是多余的。有什么想法吗?

编辑:另外,我知道在调用任一类时,我可以完全限定调用代码,但 System.Configuration 命名空间和 &lt;CompanyName&gt;.&lt;ProductName&gt;.Configuration 命名空间中的类的使用频率会导致代码丑陋。

EDIT2:提供细节:

使用语句:

using System.Configuration;
using SummitConfiguration = SST.Summit.Configuration;

问题线 配置config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);

错误信息 'SST.Summit.Configuration' 是一个“命名空间”,但它被用作一个“类型”(对于上面的问题行)

【问题讨论】:

  • 是否可以使用Configuration的缩写形式,例如Config?
  • 其实这也是可能的。我想避免重用产品名称,因为前面在命名空间中提到过,但缩写可能不是一个坏主意。

标签: c# .net namespaces


【解决方案1】:

通常,在这种情况下,我会离开 Configuration 命名空间,并使用别名来访问我的命名空间(而不是完全限定)。例如:

using System.Configuration;
using PC = MyCompany.MyProduct.Configuration;

// ...

string configValue = PC.ConfigurationManager.GetValue("Foo");

【讨论】:

  • 这是有道理的,但我得到的 'mynamespace' 是一个 'namespace' 但在使用 System.Configuration.Configuration 类时用作'type'。有什么想法吗?
  • 您需要提供更多信息 - 如果您发布您的 using 语句(别名 + 其他),加上几行显示调用,我们可以缩小范围。不过,我发布的内容效果很好 - 我一直在使用它。
  • 您是否也在“使用Summit;”在那里?听起来编译器正在查找“配置”并将其连接到“Summit.Configuration”,这可能会发生在“使用 Summit;”
  • 我也使用命名空间别名并且在这方面取得了很好的成功。这种方法的唯一问题是,当您可能不需要在所有其他引用本地 Configuration 类型而不是 System.Configuration 类型的类中使用命名空间别名时,命名空间别名可能会成为一个歧义点。突然你的命名不一致。如果这感觉冒犯,您需要将本地配置类本身重命名为其他名称(例如 Config)。
【解决方案2】:

做这样的事情怎么样:

using System.Configuration;
using MyCompany.MyProduct.ProdConfig

using System.Configuration;
using MyCompany.MyProduct.Config

【讨论】:

    【解决方案3】:

    使用 Configuration 命名空间应该没有问题 - 您只需要通过完全限定名称来明确引用您想要的名称。这有点痛苦,但我认为如果命名空间中的对象确实处理配置,那么明确的命名约定比提出不同的名称要好。正如其他人所建议的,您也可以使用别名。

    【讨论】:

      【解决方案4】:

      这可能不适合你,但是当我遇到这个时,我只是重命名我的命名空间和/或类。类似于 Config.ConfigManager。

      【讨论】:

        猜你喜欢
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2016-05-24
        • 2010-12-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多