繁体   English   中英

命名空间和子命名空间

[英]Namespace and Sub Namespaces

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

例子:

namespace Root.Account
{
//code goes here
}

namespace Root.Orders
{
//code goes here
}


//New File:
using Root;

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

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

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

谢谢

没有,没有什么工作是一路下滑的树。 但是,您不需要包含 using 指令来树。 换句话说,如果您使用:

namespace Root.Orders
{
    // Code
}

那么Root中的任何类型都已经可见。

不,C#中的using指令不允许这样做:

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

然而,VB.NET 通过Imports语句支持更接近的行为:

Imports 语句提供的元素范围取决于您在使用 Imports 语句时的具体程度。 例如,如果只指定了一个命名空间,则该命名空间的所有唯一命名的成员以及该命名空间内的模块成员都可以不加限定地使用。 如果同时指定了命名空间和该命名空间的元素名称,则只有该元素的成员可用而无需限定。

也就是说,如果你说

Imports Root

那么你就可以只说Orders.Whatever

从您陈述原始问题的方式来看,听起来您可能会或可能不会从仅使用以下内容中意识到这一点:

using Root;

稍后澄清代码的方式是:

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

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

不,不是真的。 =)

.NET/C# 不支持这种形式的命名空间使用。

如果我理解正确,你的层次结构看起来像这样

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM