这样可以:
namespace Simple.OData
{
// Common OData functionality
}
namespace Simple.Data.OData
{
// The Simple.Data adapter for OData
}
感觉可能是错的,但我不确定。
答案 0 :(得分:7)
这当然有效 - 考虑System.Xml.Linq
和System.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.Data
,System.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
}