Пространство имен и подпространства имен - PullRequest
17 голосов
/ 20 апреля 2009

Есть ли способ использовать пространство имен, а затем автоматически использовать все вложенные пространства имен?

Пример:

namespace Root.Account
{
//code goes here
}

namespace Root.Orders
{
//code goes here
}


//New File:
using Root;

Чтобы я мог использовать код в Root.Account, мне нужно было бы добавить использование Root.Account в мой код.

Я хотел бы иметь возможность просто сказать, используя Root, и заставить его подобрать для использования любые классы подпространств имен.

Если это имеет смысл, возможно ли это?

Спасибо

Ответы [ 6 ]

25 голосов
/ 20 апреля 2009

Нет, ничто не работает таким образом вниз дерево. Тем не менее, вам не нужно включать использование директив, чтобы пройти вверх дерево. Другими словами, если вы используете:

namespace Root.Orders
{
    // Code
}

тогда любые типы в Root уже видны.

9 голосов
/ 20 апреля 2009

Нет, директива using в C # не позволяет это:

Создайте директиву using для использования типов в пространстве имен без указания пространства имен. Директива using не дает вам доступа ни к каким пространствам имен, вложенным в указанное вами пространство имен.

VB.NET, однако, поддерживает несколько более близкое поведение с оператором Imports:

Область действия элементов, доступных в операторе Imports, зависит от того, насколько конкретно вы используете оператор Imports. Например, если указано только пространство имен, все члены с уникальным именем в этом пространстве имен и члены модулей в этом пространстве имен доступны без квалификации. Если указаны пространство имен и имя элемента этого пространства имен, только члены этого элемента доступны без квалификации.

То есть, если вы скажете

Imports Root

тогда вы сможете просто сказать Orders.Whatever.

2 голосов
/ 20 апреля 2009

Судя по тому, как вы сформулировали исходный вопрос, кажется, что вы можете или не можете понять это, просто используя:

using Root;

Как вы поясните свой код позже:

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

Вам не нужно использовать Root.Account для доступа к коду, и то же самое с Root.Orders. Кроме этого, нет способа автоматически рекурсивно использовать пространства имен. Я думаю, что это приведет к злоупотреблениям с использованием системы;

1 голос
/ 20 апреля 2009

.NET / C # не поддерживает эту форму пространства имен с использованием.

1 голос
/ 20 апреля 2009

Нет, не совсем. =) * * Тысяча одна

0 голосов
/ 24 августа 2015

Пространство имен как контейнер объектов. Они могут содержать объединение, структуру, классы, делегат и интерфейс. Основное значение пространства имен в Asp.net C # заключается в создании иерархической организации программы.

узнать больше для блога ... http://asp -net-by-parijat.blogspot.in / 2015/08 / what-is-namespace-in-c-need-of.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...