Wie lösen Sie .Net-Namespace-Konflikte mit dem Schlüsselwort „using“?
-
09-06-2019 - |
Frage
Hier liegt das Problem: Sie schließen mehrere Assemblys ein und fügen oben in Ihrer Codedatei „using namespaceX“ hinzu.
Jetzt möchten Sie eine Klasse erstellen oder ein Symbol verwenden, das in mehreren Namespaces definiert ist, z. B. System.Windows.Controls.Image
& System.Drawing.Image
Wenn Sie nun nicht den vollständig qualifizierten Namen verwenden, wird aufgrund der Mehrdeutigkeit trotz der richtigen „using“-Deklarationen oben ein Crib-/Build-Fehler auftreten.Was ist hier der Ausweg?
(Ein weiterer Wissensdatenbankbeitrag..Ich habe die Antwort nach etwa 10 Minuten Suche gefunden, weil ich nicht wusste, nach welchem Schlüsselwort ich suchen sollte.)
Lösung
Alias verwenden
using System.Windows.Controls;
using Drawing = System.Drawing;
...
Image img = ... //System.Windows.Controls.Image
Drawing.Image img2 = ... //System.Drawing.Image
Wie man:Verwenden Sie den Namespace-Alias-Qualifizierer (C#).
Andere Tipps
Diese Seite hat eine sehr gute Zuschreibung auf Namensräume und die using-Anweisung:
http://www.blackwasp.co.uk/Namespaces.aspx
Sie möchten den Teil über „Erstellen von Aliases“ lesen, die es Ihnen erlaubt, einen Aliasnamen zu machen für eine oder beide der Namensräume und verweisen sie damit wie folgt aus:
using ControlImage = System.Windows.Controls.Image;
using System.Drawing.Image;
ControlImage.Image myImage = new ControlImage.Image();
myImage.Width = 200;