La diferencia entre los espacios de nombres en Visual Basic.NET vs en C # y cómo tratar con ellos

StackOverflow https://stackoverflow.com/questions/1894753

  •  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 ''." o "Tipo 'Name.Test' no está definido." en mi lista de errores. He encontrado dos maneras de hacer que funcione, pero tampoco son razonable esperar de un usuario. Una de ellas es para eliminar la "raíz de espacio de nombres" de las propiedades del proyecto. El otro es para incluir ese espacio de nombres entre "global" y "Nombre".

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?

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top