Come si risolvono i conflitti dello spazio dei nomi .Net con la parola chiave "using"?
-
09-06-2019 - |
Domanda
Ecco il problema, includi più assembly e aggiungi "using namespaceX" nella parte superiore del file di codice.
Ora vuoi creare una classe o utilizzare un simbolo che è definito in più nomi, ad es. System.Windows.Controls.Image
& System.Drawing.Image
Ora, a meno che non si utilizzi il nome completo, si verificherà un errore di crib/build dovuto all'ambiguità nonostante le giuste dichiarazioni 'using' in alto.Qual è la via d'uscita qui?
(Un altro post della knowledge base..Ho trovato la risposta dopo circa 10 minuti di ricerca perché non conoscevo la parola chiave giusta da cercare)
Soluzione
Usa l'alias
using System.Windows.Controls;
using Drawing = System.Drawing;
...
Image img = ... //System.Windows.Controls.Image
Drawing.Image img2 = ... //System.Drawing.Image
Come:Utilizzare il qualificatore alias dello spazio dei nomi (C#)
Altri suggerimenti
Questa pagina contiene un ottimo articolo sugli spazi dei nomi e sull'istruzione using:
http://www.blackwasp.co.uk/Namespaces.aspx
Vuoi leggere la parte sulla "Creazione di alias" che ti permetterà di creare un alias per uno o entrambi gli spazi dei nomi e fare riferimento ad essi in questo modo:
using ControlImage = System.Windows.Controls.Image;
using System.Drawing.Image;
ControlImage.Image myImage = new ControlImage.Image();
myImage.Width = 200;