OveRRidEMedlem sedan feb. 200112 078 inlägg Hej! :)
Jag funderade lite på hur man skall strukturera upp en lite större applikation när det kommer till namnrymder, moduler och klasser.
Vi ponerar en VB-fil med tre fantastiskt väl namngivna namnrymder i;
Namespace1
Module1
Module2
Class1
Namespace2
Class2
Namespace3
Class3
Class4
End Namespace
End Namespace
End Namespace
Kan nu t.ex. Class3 använda metoder i Module1 och Module2? Hur mycket skall man egentligen klämma in i en fil? Kan jag distribuera min 'trädstruktur' av namnrymder mellan hur många olika separata komponenter (vb-filer) som helst? Kan jag utan problem importera Namespace2 på samma sätt som jag skulle importera Namespace3, eller måste det namespace som jag importerar alltid vara längst ner i strukturen i filen?
PaceMedlem sedan juni 20019 024 inlägg Varför lägger du allt i en fil?
Jag lägger en class per fil (alternativt module eller vad det nu kan vara), vilket gör att jag får överblick redan när jag tittar på filerna. Namespaces representeras av mappar.
Åtkomstmöjligheterna representeras av om de är deklarerade "public" eller motsvarande. Det har inget med strukturen att göra. Du kan importera vilken class/namespace som helst, förutsatt att dll-filen ligger i din applikations bin-mapp.
OveRRidEMedlem sedan feb. 200112 078 inlägg
Pace skrev:
Varför lägger du allt i en fil?
Ja, det är ju det jag frågar. ;)
Jag lägger en class per fil (alternativt module eller vad det nu kan vara), vilket gör att jag får överblick redan när jag tittar på filerna. Namespaces representeras av mappar.
Vad döper du filerna till då isåfall? Namespace1.Namespace2.Class?
Åtkomstmöjligheterna representeras av om de är deklarerade "public" eller motsvarande. Det har inget med strukturen att göra. Du kan importera vilken class/namespace som helst, förutsatt att dll-filen ligger i din applikations bin-mapp.
Ja, men kan jag gå utanför mitt 'namespace-scope'? Alltså, om jag importerar enbart Namespace1.Namespace2.Namespace3, kan jag då komma åt Module1 eller Class1 som finns i Namespace1, om nu de är definerade som Public?
GladhMedlem sedan maj 20012 812 inlägg En fil per klass, eller i .NET 2.0 så kan du ha en klass utdelad på flera filer. Men just nu så är rekomendationen en fil = en klass.
Filen döper du till samma namn som classen, alltså inget namespace i klassen.
Respektive namespace är antingen en underkatalog i ditt projekt eller ett helt nytt projekt.
Säg att du vill skapa en massa Utility som du vill använda då döper du ditt huvudnamespace till.
[FÖRETAGETS_NAME].Utility
och om du där i vill ha en mail utility som innehåller flera olika klasser så blir det:
[FÖRETAGETS_NAME].Utility.Mail
Detta namespace kan vara en helt egen dll, eller så kan du skapa en ny undermapp i din [FÖRETAGETS_NAME].Utility Solution. Jag rekomenderar dig dock att ha det som ett eget projekt.
Namespace har inget med vilka filer som du "importerar" till ditt projekt, detta görs med references.
Om du skirver
Using [FÖRETAGETS_NAME].Utility.Mail
Så betyder det inte att du har importerat denna dll till ditt projekt utan att du bara gjort så du slipper skriva ut hela namespacet varje gång du vill åt någon klass som ligger i [FÖRETAGETS_NAME].Utility.Mail namespacet.
- M