Es ist ganz einfach. Hören auf die .NET-Framework-Richtlinien einmal hilft tatsächlich (obwohl viel Material in dem Buch ist einfach nur Elemente des Java-Stils noch einmal in Redmond Wonderland) ..
Sie sollten ähnliche Typnamen in Cross-oder Intra-Projekt vermeiden/Bibliothek Mischen von Namespaces ie. Mischen über Domains und Modelle in generischen (auch in C++ eine, die extrem streng und mächtig ist, hat es auch eine Inkarnation in Compiler, Auflösung und Compiler Abstürze und Probleme Enum-Stil).
Daher ist sogar die vollständige Qualifizierung die ganze Zeit nicht narrensicher (und btw Aliases und 'using' sind extrem begrenzt und verursachen leichte Duplikation im besten Fall und beweisen C# Schwachstellen bei generischen Programmen usw.).
In meiner Erfahrung sind Daten Domain-Typen ein primäres Ziel für einen geeigneten Namen und damit für Namen Refactoring die lauten:
a) billig (als Prozess in der reichen Ast aber einfache adt-Unterstützung wie in C#, Rechtsklick in IDE und fühlen sich mächtig nach Typ-herausgefordert dynamische Ruby Fans/Backers)
[kann auch gelesen werden als: 4.0 dynamische Funktionen Schaf wird jeder Schuld, aber nicht über Namespaces oder funktionale JS, C denken - mit Vorlagen (nicht C-mit-Klassen) oder ähnlich]
b) kommuniziert die Semantik besser ie. die Absicht (dh Klempnerarbeit + Unterstützung, um deine eigene Verarbeitung aufzubauen)
c) normalerweise von primitiver, aber getippter Natur oder Nachricht (nicht OO geschrieben; dh OO-artige Kritik wie im oben erwähnten Buch, das selbst gerade aus dem Intro bricht Aufzüge alle 'Model' land)
d) und 'Aliasing' verweisen werden ein nützliches Artefakt in domänenübergreifende Nutzung (was tatsächlich möglich ist und ganz 2020-like .. dh. Wert-Typ Programmierung)
Es gibt wirklich keine Regeln, aber hüte dich davor, dass du Namespaces in der Entwicklung mischen wirst, wenn es am wenigsten erwartet wird. Das bedeutet nur eine Sache für einen gemanagten Entwickler: Verwirrung. Plus etwas weniger ernst, mehr Kompilierungszeit und IntelliNonsense Fehler natürlich.
Tough Problem in allen Sprachen, so ist es Ihr Design/Naming Problem .. Auch Werkzeugverkäufer können für Maschinen zu parsieren vermasseln .. sagen Ausgabe von erweiterten populären IDEs basierend auf veralteten Browse-Informationen; dann wieder, andere tun es wirklich gut für gemanagte Sprachen.
Nicht, dass ich gegen doppelte Namen bin, gibt es Fälle (sie sind hart aber notwendig), wenn Dual + Interop + Repräsentation usw. andere Modelle mischen, wo der gleiche Name es lesbarer macht; dh. wo Duplikation ist eine Notwendigkeit der Dual-Usage .. aber das ist niedriger Ebene Idiome, die C# ist nicht freundlich oder ermutigend (re: zugunsten Overhead).
Eine Sache zu beachten, (nur um Ihre Antwort hinzuzufügen) verwenden Sie keinen Alias für NUR einen. Benutze Alias 'für beide und referenziere sie immer mit dem Alias. Lassen Sie nicht zu, dass einer von ihnen in den Standardzustand zurückfällt, da dies zu Verwirrung führen wird. – DevinB