Mit Visual Studio 2010 (möglicherweise auch 2008) merke ich, dass Intellisense den vollständig qualifizierten Namespace für Enums vorschlägt.Visual Studio empfiehlt vollständig qualifizierte Namespaces, wenn sie nicht benötigt werden
Zum Beispiel kann ich Code wie folgt schreiben:
element.HorizontalAlignment = HorizontalAlignment.Right;
element.VerticalAlignment = VerticalAlignment.Bottom;
Aber wenn ich versuche, es zu schreiben, es schlägt vor, ich es so schreiben:
element.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
element.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
Dieser unnötige zusätzliche Code kann wirklich summieren sich und macht es weniger lesbar, und ich muss im Grunde mit Intellisense kämpfen, um es zu vermeiden.
Gibt es einen Grund dafür? Kann ich es einfach ausschalten? Ich nehme an, der Grund ist, dass der Name der Enumeration mit dem Namen der Eigenschaft identisch ist. Aber das ist wirklich kein guter Grund.
EDIT:
Hier ist ein weiteres Beispiel, das vollständig qualifizierte Namensgebung nicht notwendig ist, zeigt, warum.
using SomeOtherNamespace;
namespace SomeNamespace
{
public class Class1
{
public Class2 Class2 { get; set; }
public Class1()
{
// These all compile fine and none require fully qualified naming. The usage is context specific.
// Intellisense lists static and instance members and you choose what you wanted from the list.
Class2 = Class2.Default;
Class2.Name = "Name";
Class2.Name = Class2.Default.Name;
Class2 = Class2;
}
}
}
namespace SomeOtherNamespace
{
public class Class2
{
public static Class2 Default { get; set; }
// public static Class2 Class2; (This throws an error as it would create ambiguity and require fully qualified names.)
// public static string Name { get; set; } (This also throws an error because it would create ambiguity and require fully qualified names.
public string Name { get; set; }
}
}
Inestresting; VS hat niemals völlig qualifizierte Namen vorgeschlagen, wenn es nicht erforderlich ist, zu meiner Erinnerung. –
Ich hatte das gleiche Problem zuvor in einer Windows Forms-Anwendung. Es wurde vorgeschlagen, dass ich System.Windows.Forms.DialogResult.OK statt nur DialogResult.OK schreibe. Ich bin mir ziemlich sicher, dass es eine lokale Eigenschaft namens "DialogResult" in diesem Bereich (ein Formular) gibt. –
rechts. Ich würde es in einer solchen Situation für erforderlich halten. –