Just my 2 cents auf diese Frage geben, Jon Antwort mit etwas zu erweitern „schon dort - getan, dass“ Erfahrung:
Ich habe den Einsatz in mehreren Lösungen, mindestens zwei von Namespace namens Projekte (na ja, irgendwie). Zum Beispiel, wenn ich an der MyApp-Lösung arbeite, hätte ich MyApp.Web
und MyApp.Web.Controls
.
Oder: MyApp.Service
, MyApp.Core
, MyApp.Core.Entities
und so weiter. Ziemlich gut bekannt Namenskonvention, wo der Stammnamespace wie MyCompany.MyApp.Service etc...
geht
Vorteil: - fand es sehr nützlich, wenn in einem Team zu arbeiten, um die Abhängigkeiten zwischen App-Modulen zu markieren. Wenn Ihr Modul Web.Controls
(es ist nur ein Beispiel, wählen Sie es nicht :) ist über die Web-Benutzeroberfläche freigegeben, möchten Sie in der Regel nicht app-spezifischen Code in Ihren benutzerdefinierten Steuerelementen. Wenn das Modul "Kind/verschachtelt" getrennt bleibt (auf das vom Hauptprojekt verwiesen wird), wird dies erzwungen. - wenn Sie zumindest daran denken, können Sie möglicherweise eine bessere Projektstruktur erstellen. Welcher Namespace gehört zu einem separaten Projekt und welcher nicht? Die Beantwortung der Frage alleine ist hilfreich genug.
Nachteil: - es ist sehr einfach „trigger happy“ zu bekommen und hundert Projekte, anstatt, entsprechende Ordner/Namensräume erstellen.
Das gesagt, neigen in der Regel dazu, Ordner anstelle von separaten Projekten zu erstellen, außer für den Fall, wenn es wirklich ein "Sub-Modul" ist.
Geschachtelte Namespaces greifen meist auf den übergeordneten Namespace zu, aber nicht umgekehrt. Der übergeordnete Namespace ist nicht von dem verschachtelten Namespace abhängig. So zB) "Project.Common.Util" verweist möglicherweise auf "Project.Common", aber "Project.Common" ignoriert "Project.Common.Util" – Sung
@Sung: Ich bin nicht einverstanden, zum Beispiel System.Data.DataTable.Load (IDataReader) ist nur ein Beispiel. Ich habe auch gesehen, dass viele Konfigurationsklassen in einen Kind-Namespace verschoben werden. – JoshBerke
@Josh: Würde das normalerweise nicht eine zirkuläre Referenz erzeugen? – Sung