La diferencia entre los espacios de nombres en Visual Basic.NET vs en C # y cómo tratar con ellos
-
19-09-2019 - |
Pregunta
En C #, si lo hace, se compilará:
namespace Name
{
public class Test
{
}
public class TestUse
{
private global::Name.Test test;
}
}
Si se intenta la misma en VB.NET, sin embargo, no lo hará:
Namespace Name
Public Class Test
End Class
Public Class TestUse
Private test As Global.Name.Test
End Class
End Namespace
consigo (dependiendo de la forma en que trato de usar "Test") o bien " 'Nombre' no es un miembro de '
He hecho una herramienta personalizada que utiliza CodeDom para generar código para C # y VB.NET. Esta es la razón por la cual ninguno de los dos correcciones anteriores son factibles: No puedo esperar que mis usuarios tengan un espacio de nombres raíz vacío, y me gustaría tener que hacer trucos-VB específico en mi generación de código (tipo de derrota el propósito de utilizar una herramienta de lenguaje neutro, no es cierto?), tales como escoger el "espacio de nombres root" (no es que me gustaría saber cómo la parte superior de la cabeza) e incluirlo en mi generación de código.
No quiero dejar de lado el modificador mundial tampoco, porque protege la herramienta de usuarios que escogen nombres malos para la salida generada. ¿Alguien tiene una sugerencia para cómo debo lidiar con esto?
Solución
Teniendo en cuenta que usted tiene que realizar diferentes tareas código-gen, ya sea para el lenguaje de todos modos, sería más que otra gota en el mar de las diferencias para generar el código.
La codificación en el trick-VB específica de insertar el nombre por defecto no es demasiado grande un problema, a primera vista, en comparación con los otros detalles de implementación.
Buena suerte!