命名空间和子命名空间

时间:2009-04-20 15:59:38

标签: c# namespaces

有没有办法使用命名空间然后自动使用所有子命名空间?

示例:

namespace Root.Account
{
//code goes here
}

namespace Root.Orders
{
//code goes here
}


//New File:
using Root;

为了让我使用Root.Account中的代码,我需要使用Root.Account添加到我的代码中。

我希望能够说使用Root并让它获取任何子命名空间类以供使用。

如果这是有道理的,这可能吗?

由于

7 个答案:

答案 0 :(得分:25)

不,没有什么工作 down 树。但是,您不需要使用指令来 up 树。换句话说,如果您使用:

namespace Root.Orders
{
    // Code
}

然后Root中的任何类型都已可见。

答案 1 :(得分:9)

不,using指令在C#does not allow中:

  

创建using指令以使用命名空间中的类型,而无需指定命名空间。 using指令不允许您访问嵌套在您指定的命名空间中的任何命名空间。

VB.NET,supportsImports语句的关系稍微接近:

  

Imports语句提供的元素范围取决于使用Imports语句时的具体情况。例如,如果仅指定了命名空间,则该命名空间的所有唯一命名成员以及该命名空间中的模块成员都可以无限制地使用。如果同时指定了命名空间和该命名空间的元素名称,则只有该元素的成员可以无限制地使用。

也就是说,如果你说

Imports Root

然后你就可以说Orders.Whatever

答案 2 :(得分:2)

从您说出原始问题的方式来看,听起来您可能会或可能不会意识到仅仅使用:

using Root;

您稍后澄清代码的方式是:

Account.Class obj = new Account.Class();
Orders.Class obj = new Orders.Class();

您无需使用Root.Account来访问代码,而使用Root.Orders也是如此。 除此之外,没有办法自动递归使用命名空间。我认为这会导致滥用系统;

答案 3 :(得分:1)

不,不是真的。 =)

答案 4 :(得分:1)

.NET / C#不支持使用。

这种形式的命名空间

答案 5 :(得分:0)

如果我理解正确的话,你的层次结构是这样的

namespace Root
{
  namespace Root.Account
  {
     public class A{}
  }

  namespace Root.Orders
  {
    public class B{}
  }
}

你能做的是

using Root = Root;

然后访问子命名空间中的类,如

var myClassA = Root.Account.A();

var myClassB = Root.Orders.B();

有关更多信息,您可以阅读Microsoft docs about namespaces

答案 6 :(得分:-1)

命名空间就像一个对象的容器。它们可能包含union,结构,类,委托和接口。 Asp.net C#中名称空间的主要重要性在于创建一个程序化的组织。

了解更多博客... http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html