c# - without - ¿Hay alguna forma de escapar del espacio de nombres raíz en VB?
es necesario el administrador de espacios de nombres o xsltcontext c# (5)
Creo que la triste realidad es que no puedes. Los espacios de nombres se anexan al espacio de nombres raíz. La documentación no da ninguna pista de ningún mecanismo de escape. Hay una nota sobre el uso de la palabra clave Global
en relación con los espacios de nombres, pero interpreto esa parte del texto como dicusing sobre cómo referirme a los espacios de nombres en lugar de cómo declararlos.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Text.MyCustom mc = new System.Text.MyCustom();
}
}
}
namespace System.Text
{
public class MyCustom { }
}
¿Cómo puedo hacer esto en VB, teniendo un espacio de nombres raíz en la aplicación, esto es posible?
Actualización : de acuerdo con las respuestas, supongo que no hay forma de hacerlo. Publiqué una sugerencia de función para Microsoft Connect: vote .
En las propiedades del proyecto de un proyecto VB puede cambiar el espacio de nombres raíz. Esto es por defecto igual que el nombre del proyecto, pero puede eliminarlo, y luego tiene el poder completo de la estructura del espacio de nombres en el código. El inconveniente es que debe especificar el nombre del proyecto como espacio de nombre en todas partes en el código donde lo necesite ...
Para los proyectos de C #, la configuración similar en las propiedades del proyecto, es solo el espacio de nombres predeterminado, que se reemplaza si se especifica el espacio de nombres en el código. Para proyectos de VB, especifica el espacio de nombre de nivel superior, no el predeterminado ...
En VB.NET de VS 2012 este viejo problema está solucionado. A partir de esta versión, puede escapar del espacio de nombres raíz con un líder global
. El siguiente código es defectuoso en VS 2010 y correcto en VS 2012:
Imports Tools
Module Module1
Sub Main()
SayHello()
End Sub
End Module
Namespace Global.Tools
Module TestModule
Sub SayHello()
Console.Out.WriteLine("Hello")
End Sub
End Module
End Namespace
Establecer un espacio de nombres en VB.NET es más o menos lo mismo que declarar un espacio de nombres en C #, ¡solo con la sintaxis de VB.NET! Desafortunadamente, el espacio de nombres raíz siempre está presente, por lo que cualquier espacio de nombres nuevo declarado estará dentro del espacio de nombres raíz.
Namespace ConsoleApplication1
Class Program
Private Shared Sub Main(ByVal args As String())
Dim mc As New System.Text.MyCustom()
End Sub
End Class
End Namespace
Namespace System.Text
Public Class MyCustom
End Class
End Namespace
El código anterior le proporcionará lo siguiente si el espacio de nombres raíz es Test
.
Test.ConsoleApplication1
Test.System.Text
Saludos por los comentarios chicos, estaba publicando en la memoria!
Eche un vistazo a esta pregunta: ¿es posible anular el espacio de nombres raíz de VB.NET? .
La conclusión es que su única opción es dejar el espacio de nombres predeterminado vacío en las propiedades del proyecto y luego ajustar todas las definiciones de clase / módulo en las declaraciones de Namespace.