是否可以在树的两个点上有一个名称空间名称

本文关键字:两个 有一个 空间 是否 | 更新日期: 2023-09-27 18:07:53

这样可以吗:

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

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

是否可以在树的两个点上有一个名称空间名称

这当然是有效的-考虑System.Xml.LinqSystem.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   
}