La differenza tra gli spazi dei nomi in Visual Basic.NET vs in C # e come trattare con loro
-
19-09-2019 - |
Domanda
In C #, se si esegue questa operazione, si compilerà:
namespace Name
{
public class Test
{
}
public class TestUse
{
private global::Name.Test test;
}
}
Se si prova lo stesso in VB.NET, tuttavia, non lo farà:
Namespace Name
Public Class Test
End Class
Public Class TestUse
Private test As Global.Name.Test
End Class
End Namespace
ottengo (a seconda del modo in cui cerco di usare "Test") o " 'Nome' non è un membro di '
Ho fatto uno strumento personalizzato che utilizza CodeDom per generare il codice sia per C # e VB.NET. Questo è il motivo per cui nessuno dei due correzioni sopra sono fattibili: Io non posso aspettare i miei utenti di avere uno spazio dei nomi principale vuoto, e mi piacerebbe odio dover fare i trucchi specifici per VB della mia generazione di codice (tipo di sconfitte lo scopo di usare uno strumento indipendente dal linguaggio, non è vero?), come individuando la "Root Namespace" (non che mi piacerebbe sapere come la parte superiore della mia testa) compreso nel mio generazione del codice.
Non voglio lasciare fuori il modificatore globale sia, perché protegge lo strumento da parte degli utenti di picking brutti nomi per l'output generato. Qualcuno ha un suggerimento per come dovrei fare con questo?
Soluzione
Dato che è necessario eseguire diversi compiti in codice generazione sia per la lingua in ogni caso, sarebbe solo un altro goccia nel mare delle differenze per la generazione di quel codice.
Codifica in trick-specific VB di inserire il namespace di default non è troppo grande un problema, a prima vista, rispetto agli altri dettagli di implementazione.
In bocca al lupo!