webForumDet fria alternativet

Namnrymder, klasser och modellering

3 svar · 262 visningar · startad av OveRRidE

OveRRidEMedlem sedan feb. 200112 078 inlägg
#1

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
#2

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
#3

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
#4

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

124 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)