【问题标题】:Is it OK to have a namespace name which exists at two points in the tree?命名空间名称存在于树中的两个点是否可以?
【发布时间】:2011-11-10 14:52:23
【问题描述】:

这样可以吗:

namespace Simple.OData
{
    // Common OData functionality
}

namespace Simple.Data.OData
{
    // The Simple.Data adapter for OData
}

感觉可能是错的,但我不确定。

【问题讨论】:

标签: c# .net


【解决方案1】:

这当然是有效的 - 考虑 System.Xml.LinqSystem.Linq。我无法立即预见任何问题...但这并不是说它一定是个好主意。

我个人更喜欢 Simple.Data.OData 而不是 Simple.OData.Data,因为我怀疑这主要针对使用 Simple.Data 但碰巧使用 OData 的人 - 而不是专注于的人OData。同样,这就像 LINQ:System.Xml.Linq 是一个 XML API,它可以与 LINQ 一起玩;它不是这样的 LINQ“提供者”。

基本上,这与“我有一个转换器可以从 A 型转换为 B 型;我应该把它放在 A 型还是 B 型附近?” - 但有命名空间。我的经验是,通常比采取任何一种方法都会引起的问题更让人头疼的是考虑最好的事情......

【讨论】:

  • 只是想知道为什么最初不考虑“System.Linq.Xml”而不是“System.Xml.Linq”,对我来说看起来更清楚
  • 它可能存在于System.Xml 程序集中,而不是System.Linq 之一?
  • @sllev:我只是为这个效果添加了一条评论——基本上它是一个 XML API。当您想处理 XML 数据时,您可以使用它——它恰好与 LINQ 一起工作。
  • @Kieren:实际上它有自己的程序集(System.Xml.Linq)
  • 我希望在 BCL 中有一个这样的例子,但忘记了 System.Xml.Linq。发现先例!塔。
【解决方案2】:

更正确的是namespace Simple.OData.Data

这是因为Data 命名空间应该与与OData 相关的其他类分组。

如果您正在考虑System.DataSystem.Data.SqlClient 的行,那很大程度上是因为它们是System.Data.dll 程序集的一部分,并且是其中的一个组成部分。我自己的IDbCommand 等类的实现存在于MyNamespace.SubNamespace.AdoWrapper 命名空间中,如果这能给你一些上下文的话。

在您的情况下,Simple.Data 可能不存在或包含很多内容,不像 System.Data ..

【讨论】:

  • +1 但听起来更酷,因为“更正确的命名空间 Simple.OData.Data 会是,年轻的学徒”:p
【解决方案3】:

当然可以,如果它在语义上是正确的。例如,看看有多少框架命名空间以.Design 结尾!

【讨论】:

    【解决方案4】:

    这可能会让一些人感到困惑,但它不应该引起任何问题。 如果您键入以下内容,您可能需要预先定义命名空间:

    using Simple.Odata;
    using Simple.Data.Odata;
    

    否则编译将无法识别它。 您尝试创建的东西可能有更好的结构,但要回答您的问题:是的,如果您愿意,可以这样做。

    【讨论】:

      【解决方案5】:

      是的,但也有一些缺点。

      命名空间是类型名称的一部分。 也就是说,在命名空间A.B 中名为C 的类型实际上名为A.B.C

      当您使用using 语句时,您只是在使用一种快捷方式

      缺点:

      我注意到有时 Visual Studio 可能会变得有点混乱,特别是在使用诸如 System 之类的命名空间以及 .Net 框架中存在的其他命名空间时...输入。

      【讨论】:

        【解决方案6】:

        最后一部分应该依赖于命名空间的前一部分。您的适配器依赖于 Simple.OData,但也依赖于 Simple.Data。但由于 Simple.OData 不太通用,我更喜欢这样的东西:

        using Simple.Data    
        
        namespace Simple.OData.Adapters
        {
            // The Simple.Data adapter for OData   
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 2019-06-26
          • 1970-01-01
          • 2020-07-20
          相关资源
          最近更新 更多