2010-10-29 8 views
2

J'ai généré une interface basée sur un fichier de définition WSDL avec wsdl.exe à utiliser avec un projet. Le fichier .cs généré résultant a l'interface attendue à l'intérieur, mais le fichier d'interface n'a pas d'espace de noms - la définition de l'interface est directement en dessous des instructions using.C#: Interface sans espace de noms

Je n'ai jamais vu un fichier de code source sans un espace de noms explicitement déclaré, ce qui me conduit à me demander: quels sont les avantages et les inconvénients de ne pas déclarer explicitement un espace de noms? Est-ce une chose commune à faire avec le code généré?

+2

Cette interface sera disponible dans l'espace de noms global. Voir http://weblogs.asp.net/zeeshanhirani/archive/2008/05/30/global-namespace-in-c.aspx – rsenna

Répondre

3

Les avantages sont, je suppose, moins de temps passé à taper dans un espace de noms ... Vous pouvez spécifier l'espace de noms que vous voulez en tant que paramètre avec wsdl.exe, et vous devriez le faire:

wsdl.exe /namespace:foo http://myreference/ 

Le inconvénient est que sans un espace de noms, vous êtes beaucoup plus susceptible d'avoir des collisions de nommage avec vos objets. Ce problème s'aggrave avec le nombre de consommateurs de votre classe ou de votre interface. Un espace de noms est certainement une bonne idée.

1

Généralement les générateurs de code ont des propriétés pour spécifier l'espace de noms pour le code généré. Les espaces de noms fournissent un regroupement logique des types, de sorte qu'ils doivent bien sûr être utilisés pour éviter les ambiguïtés.

1

Les espaces de noms sont là pour vous aider à organiser votre code et, surtout, pour éviter les conflits de noms.

J'imagine qu'il y aura un moyen de spécifier l'espace de noms pour le code généré?