2008-09-14 10 views
19

Voici le problème, vous incluez plusieurs assemblages et ajoutez 'using namespaceX' en haut de votre fichier de code.
Maintenant, vous voulez créer une classe ou utiliser un symbole qui est défini dans plusieurs espaces de noms, . System.Windows.Controls.Image & System.Drawing.ImageComment résoudre les conflits d'espace de noms .Net avec le mot clé 'using'?

Maintenant, à moins que vous utilisez le nom complet, il y aura une crèche/construire erreur due à l'ambiguïté du inspite droit « en utilisant » déclarations au sommet. Quelle est la sortie ici?

(Un autre poste de base de connaissances .. Je trouve la réponse au bout de 10 minutes de recherche parce que je ne connaissais pas le mot-clé droit de rechercher)

+0

Comme accepté answer said, utilisez l'alias mais essayez d'être composé sur l'ensemble de la base de code (un seul alias pour un espace de noms/classe et ils doivent être faciles à distinguer). – kokos

Répondre

28

Utilisez alias

using System.Windows.Controls; 
using Drawing = System.Drawing; 

... 

Image img = ... //System.Windows.Controls.Image 
Drawing.Image img2 = ... //System.Drawing.Image 

How to: Use the Namespace Alias Qualifier (C#)

+0

Suppression de ma réponse pour réduire l'encombrement. 'Namespace Alias ​​Qualifier' - maintenant ce nom est quelque chose que je n'aurais jamais pensé utiliser comme mot clé de recherche. :) – Gishu

+0

Oui, c'est un très bon exemple de violation de principe de responsabilité unique. Mais c'est trop amusant de le montrer à vos collègues et d'entendre "Wow !, FTW?!" – aku

5

Cette page a une très bonne writeup sur l'namespaces et en utilisant-déclaration:

http://www.blackwasp.co.uk/Namespaces.aspx

Vous voulez lire la partie sur « Création d'alias » qui vous permettra de faire un alias pour l'une ou l'autre des espaces de noms et les référence avec qui comme ceci:

using ControlImage = System.Windows.Controls.Image; 
using System.Drawing.Image; 

ControlImage.Image myImage = new ControlImage.Image(); 
myImage.Width = 200;