Comment résolvez-vous les conflits d’espace de noms .Net avec le mot-clé « using » ?
-
09-06-2019 - |
Question
Voici le problème, vous incluez plusieurs assemblys et ajoutez « using namespaceX » en haut de votre fichier de code.
Vous souhaitez maintenant créer une classe ou utiliser un symbole qui est défini dans plusieurs espaces de noms, par exemple System.Windows.Controls.Image
& System.Drawing.Image
Maintenant, à moins que vous n'utilisiez le nom complet, il y aura une erreur crib/build en raison de l'ambiguïté malgré les bonnes déclarations « using » en haut.Quelle est la sortie ici ?
(Un autre article de la base de connaissances..J'ai trouvé la réponse après environ 10 minutes de recherche car je ne connaissais pas le bon mot clé à rechercher)
La solution
Utiliser un pseudo
using System.Windows.Controls;
using Drawing = System.Drawing;
...
Image img = ... //System.Windows.Controls.Image
Drawing.Image img2 = ... //System.Drawing.Image
Comment:Utiliser le qualificatif d'alias d'espace de noms (C#)
Autres conseils
Cette page contient un très bon article sur les espaces de noms et l'instruction using :
http://www.blackwasp.co.uk/Namespaces.aspx
Vous souhaitez lire la partie sur la « Création d'alias » qui vous permettra de créer un alias pour l'un ou les deux espaces de noms et de les référencer comme ceci :
using ControlImage = System.Windows.Controls.Image;
using System.Drawing.Image;
ControlImage.Image myImage = new ControlImage.Image();
myImage.Width = 200;