2009-04-20 12 views
15

Existe-t-il un moyen d'utiliser un espace de noms, puis de l'utiliser automatiquement pour tous les sous-espaces de noms?Espaces de noms et sous-espaces de noms

Exemple:

namespace Root.Account 
{ 
//code goes here 
} 

namespace Root.Orders 
{ 
//code goes here 
} 


//New File: 
using Root; 

Pour moi d'utiliser le code dans Root.Account, je besoin d'ajouter à l'aide Root.Account à mon code.

Je voudrais être en mesure de dire simplement en utilisant la racine et lui faire ramasser toutes les classes d'espace de sous-noms à utiliser.

Si cela a du sens, est-ce possible?

Merci

+0

Qu'est-ce que vous en train d'essayer d'atteindre? –

Répondre

22

Non, rien ne fonctionne de cette façon bas l'arbre. Cependant, vous n'avez pas besoin d'inclure des directives pour aller jusqu'à l'arbre. En d'autres termes, si vous utilisez:

namespace Root.Orders 
{ 
    // Code 
} 

alors tous les types de Root sont déjà visibles.

+3

D'accord, c'est intéressant. Alors disons que j'avais un namespace Root.Orders.OrderItems et que je l'ai utilisé dans mes directives, je serais capable d'utiliser n'importe quelle classe dans Root et Root.Orders? – CodeLikeBeaker

+2

Non - seuls les espaces de noms situés plus haut dans la hiérarchie de l'espace de noms de votre type sont recherchés. En d'autres termes, c'est la directive d'espace de noms qui a cette «caractéristique», pas la directive using. –

1

Non, pas vraiment. =)

+0

Eh bien, pensé que je voudrais essayer :) merci! – CodeLikeBeaker

0

.NET/C# ne supporte pas cette forme d'espace de noms utilisant.

9

Non, using directive en C# does not allow ceci:

Créer une directive à l'aide d'utiliser les types dans un espace de noms sans avoir à spécifier l'espace de noms. Une directive using ne vous donne pas accès aux espaces de noms imbriqués dans l'espace de noms que vous spécifiez.

VB.NET, cependant, supports un comportement un peu plus étroite avec Imports déclaration:

La portée des éléments mis à disposition par une déclaration des importations dépend de la façon dont vous êtes spécifique lorsque vous utilisez l'instruction Imports. Par exemple, si seul un espace de noms est spécifié, tous les membres de cet espace de nommage et les membres des modules dans cet espace de noms sont disponibles sans qualification. Si à la fois un espace de noms et le nom d'un élément de cet espace de noms sont spécifiés, seuls les membres de cet élément sont disponibles sans qualification.

C'est, si vous dites

Imports Root 

alors vous serez en mesure de dire que Orders.Whatever.

1

De la façon dont vous avez déclaré la question initiale, il semble que vous pouvez ou ne pouvez pas se rendre compte que de simplement utiliser:

using Root; 

La façon dont vous clarifiez votre code plus tard est:

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

Vous ne devez pas utiliser Root.Account pour accéder au code, et la même chose avec Root.Orders. Autre que cela, aucun moyen d'utiliser automatiquement les espaces de noms récursivement. Je pense que cela conduirait à abuser avec l'utilisation du système;

-1

espace de noms comme un conteneur d'objets. Ils peuvent contenir l'union, la structure, les classes, le délégué et l'interface. L'importance principale de namespace dans Asp.net C# est de créer une organisation hiérarchique du programme.

pour en savoir plus blog ... http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html

+2

Vous avez donné une réponse à une question qui a déjà trouvé des réponses il y a 6 ans. Ce n'est pas utile. – CodeLikeBeaker