是否可以在树的两个点上有一个名称空间名称
本文关键字:两个 有一个 空间 是否 | 更新日期: 2023-09-27 18:07:53
这样可以吗:
namespace Simple.OData
{
// Common OData functionality
}
namespace Simple.Data.OData
{
// The Simple.Data adapter for OData
}
感觉可能是错的,但我不确定。
这当然是有效的-考虑System.Xml.Linq
和System.Linq
。我不能马上预见到任何问题……但这并不是说一定是一个好主意。
我个人更喜欢Simple.Data.OData
而不是Simple.OData.Data
,因为我怀疑这主要是针对那些使用Simple.Data
,但碰巧使用OData的人-而不是那些关注 OData
的人。再一次,这就像LINQ: System.Xml.Linq
是一个与LINQ一起玩的XML API;它不是LINQ的"提供者"。
基本上,这与"我有一个转换器将a型转换为B型;我应该把它放在A型还是B型附近?"-但是使用名称空间。我的经验是,通常更让人挠头的是考虑最好的办法,而不是考虑采取任何一种方法都会引起的问题。
更正确的是:namespace Simple.OData.Data
.
这是因为Data
名称空间应该与其他与OData
相关的类分组。
如果你在考虑System.Data
, System.Data.SqlClient
,那么这很可能是因为它们是System.Data.dll
组件的一部分,并且是它的一个集成部分。我自己的IDbCommand
等类的实现在MyNamespace.SubNamespace.AdoWrapper
命名空间中,如果这给了你一些背景。
在您的情况下,Simple.Data
可能不存在或有很多,不像System.Data
..
如果语义正确,当然可以。例如,看看有多少框架名称空间以.Design
结尾!
这可能会让一些人感到困惑,但应该不会造成任何问题。你可能需要预先设置命名空间,如果你输入这个:
using Simple.Odata;
using Simple.Data.Odata;
否则编译将无法识别它。对于你想要创建的东西,可能有一个更好的结构,但是回答你的问题:是的,如果你想这样做是可以的。
是的,但是有一些缺点。
名称空间是类型名称的一部分。也就是说,在名称空间A.B
中名为C
的类型,实际上被命名为A.B.C
。
当您使用using
语句时,那么您只是使用了一种快捷方式。
缺点:
我注意到有时Visual Studio可能会变得有点困惑,特别是当使用System
等名称空间时,以及其他存在于。net框架中的名称空间…您必须输入类型的全名
最后一部分应该依赖于名称空间的前一部分。您的适配器依赖于Simple。OData,还有Simple.Data。但是因为简单。OData不太通用,我更喜欢这样的:
using Simple.Data
namespace Simple.OData.Adapters
{
// The Simple.Data adapter for OData
}