Ho una classe come questa:C# con riferimenti Namespace nascosto da Classe Spazio dei nomi
namespace Token1.Token2.Token3
{
public class Class1
{
}
}
E un'altra classe come questa:
namespace Token2.Token4.Token5
{
public class Class1
{
}
}
La prima classe è una parte del mio progetto, la seconda classe proviene da una libreria di framework sviluppata da un altro gruppo all'interno della mia organizzazione. Si noti che lo spazio dei nomi della prima classe ha Token2 in secondo luogo e lo spazio dei nomi della seconda classe ha Token2 in primo luogo.
Il problema che sto avendo è che non riesco a fare riferimento alla seconda classe nel primo a causa di quella che sembra una collisione di namespace. Se provo a fare questo in prima classe:
namespace Token1.Token2.Token3
{
public class Class1
{
var frameworkClass1 = new Token2.Token4.Token5.Class1();
}
}
l'IDE di Visual Studio mette in evidenza Token4 in rosso e dice "Impossibile risolvere il simbolo 'Token4'". Se si passa il mouse sopra Token2, dove sono new'ing su Class1, intellisense mi mostra "namespace Token1.Token2", quindi è chiaramente vedere lo spazio dei nomi della mia classe di progetto e non vedere lo spazio dei nomi della mia classe framework.
Sarebbe molto difficile cambiare lo spazio dei nomi di entrambe le librerie di classi a causa della quantità di codice già presente. C'è un modo per aggirare questo?
La soluzione al tuo problema è ** se fa male quando lo fai, non farlo **. Non * mai * struttura gli spazi dei nomi in cui il primo livello di uno spazio dei nomi è uguale al secondo livello di un altro spazio dei nomi. Non provoca altro che dolore. Seguire le linee guida standard per creare spazi dei nomi che non hanno queste ambiguità. Dici che non puoi cambiarlo ora; Ti garantisco che sarà * più difficile * cambiare in futuro, quindi ora sembra un buon momento. –