如何在名称空间中创建一个类,该类具有相同的名称,该类是.net类库中另一个名称空间的一部分

时间:2010-03-24 20:55:03

标签: .net namespaces class-library

好的......这让我很难解释,所以我将从一个命名空间和一个单独的命名空间中显示一个类......

Company.Product.Domain
(这表示包含特定于该类的方法的类,我将其命名为“Domain”,这样您就可以看到我在单独的命名空间中使用相同的名称

Company.Product.Domain.Data.Contracts
(此命名空间将用于在WCF服务中使用的所有数据协定)

如果我在Company.Product.Domain课程中,并尝试使用Company.Product.Domain.Data.Contracts中的课程,当我尝试输入时,我会到Company.Product.Domain并且不会显示智能感知进一步。它还表明该引用是一个类,而不是允许我进入命名空间。

我的Company.Product.Domain.Data.Contracts课程中引用了Company.Product.Domain

是否可以在其中包含一个类Company.Product,还有另一个Company.Product.Domain.Data.Contracts的命名空间?如果是这样,怎么样?

由于

2 个答案:

答案 0 :(得分:5)

是的,这是可能的。但是,你应该像瘟疫一样避免它。它使一切更复杂。

Eric Lippert最近撰写了一系列关于这个主题的博客文章。不可否认,这不是相当同样的问题 - 他在谈论Foo.Bar.Bar(其中Foo.Bar是命名空间,而Bar是类)但我相信你会遇到许多相同的问题。实际上,我认为你实际上最终可能会使他们更糟而不是他所描述的情景。请不要这样做。

答案 1 :(得分:0)

您可以别名您的Company.Product.Domain.Data名称空间。

所以在你的Domain类中,而不是

using Company.Product.Domain.Data;

尝试类似

的内容
using myData = Company.Product.Domain.Data;
namespace Company.Product
{
  class Domain
  { ...
    myData::Data.method();
  }
}

我并不认为intellisense以你想要的方式行事,但它确实消除了Domain class与Domain命名空间的歧义。