是否可以在树中的两个点存在名称空间名称?

时间:2011-09-05 12:46:05

标签: c# .net

这样可以:

namespace Simple.OData
{
    // Common OData functionality
}

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

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

6 个答案:

答案 0 :(得分:7)

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

我个人更喜欢Simple.Data.OData而不是Simple.OData.Data,因为我怀疑这主要是针对使用Simple.Data但恰好使用OData的人 - 而不是的人专注于<{em> OData。再次,这就像LINQ:System.Xml.Linq是一个XML API,它与LINQ一起玩;它本身不是LINQ“提供者”。

基本上它与“我有一个转换器从A型转换为B型”的问题相同;我把它放在A型或B型附近吗? - 但是有名称空间。我的经验是,考虑采取任何一种方法所引起的问题,通常会考虑更好的事情来考虑最好的事情......

答案 1 :(得分:5)

更正确的是namespace Simple.OData.Data

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

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

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

答案 2 :(得分:1)

当然,如果它在语义上是正确的。查看.Design中有多少个框架名称空间结束,例如!

答案 3 :(得分:0)

是的,是的,但有一些缺点。

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

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

缺点:

我注意到有时Visual Studio可能会变得有点混乱,特别是当使用System等名称空间以及.Net框架中存在的其他名称空间时...以这种方式必须输入全名类型。

答案 4 :(得分:0)

有些人可能会感到困惑,但不应该造成任何问题。 如果键入以下内容,您可能需要预先建立名称空间:

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

否则编译将无法识别它。 对于你想要创造的东西,可能有一个更好的结构,但是要回答你的问题:是的,如果你愿意,可以这样做。

答案 5 :(得分:0)

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

using Simple.Data    

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