PDA

View Full Version : [C#] stranezza col default namespace


nrk985
24-07-2007, 17:31
Ciao a tutti.. ho un progetto in cui il default namespace (accessibile nelle proprietà del prj, prima scheda) è settato per mia necessità a "GMT".
Nell'msdn dice:
Specifies the base namespace for all files in the project. For example, if you set the root namespace to Project1 and you have a Class1 outside of any namespace in your code, its namespace would be Project1.Class1. If you have a Class2 within a namespace Order in code, its namespace would be Project1.Order.Class2.
Ora, se io non mi sono rincoglionito o ho dimenticato di colpo l'inglese, qui dice in pratica che tutti i namespace o classi nel mio prj vengono automaticamente prefissati con quel namespace li.

E invece no.
In quel prj ho fatto un namespace chiamato "Shared" e dentro ad esso una classe "Test"... quindi da qualunque punto del codice dovrei poter dichiarae una variabile di tipo "GMT.Shared.Test" .... e invece no... c'è solo "Shared.Test".
Questo vuol dire anche che se importo quel prj in un altro, tra le varie dichiarazioni using dovrò mettere solo Shared.Test anzichè il nome completo GMT.Shared.Test che volevo usare per fare un bel lavoro.

allora, dove sta l'errore secondo voi?
grazie

AlbertE
25-07-2007, 10:30
Tutte le classi che aggiungi (Add->New Item...->Class.cs) avranno di default il namespace da te impostato nella finestra delle proprietà.

Se aggiungi un (per esempio) CodeFile.cs (cioè fai Add->New Item...->CodeFile.cs) e scrivi tu tutto il codice allora il namespace è quello che imposti tu.

Per avere GMT.Shared.Test dovresti scrivere cosi:

namespace GMT
{
namespace Shared
{
class Test {}
}
}

oppure più semplicemente:

namespace GMT.Shared
{
class Test {}
}


Ciao.

nrk985
25-07-2007, 11:00
Tutte le classi che aggiungi (Add->New Item...->Class.cs) avranno di default il namespace da te impostato nella finestra delle proprietà.

Se aggiungi un (per esempio) CodeFile.cs (cioè fai Add->New Item...->CodeFile.cs) e scrivi tu tutto il codice allora il namespace è quello che imposti tu.

Per avere GMT.Shared.Test dovresti scrivere cosi:

namespace GMT
{
namespace Shared
{
class Test {}
}
}

oppure più semplicemente:

namespace GMT.Shared
{
class Test {}
}


Ciao.
ah ma quindi è solo un controllo in fase di creazione del file cs... pensavo che fosse una cosa che quando compilava prependeva quel namespace a tutti quelli presenti nei file cs.... nn è spiegato così bene nell'msdn :D

ciao e grazie!