Есть ли способ избежать пространства имен root в VB?
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Text.MyCustom mc = new System.Text.MyCustom();
}
}
}
namespace System.Text
{
public class MyCustom { }
}
Как это сделать в VB при наличии корневого пространства имен в приложении, возможно ли это?
Обновление:
Согласно ответам, я полагаю, что нет никакого способа сделать это.
Я опубликовал предложение Microsoft Connect: Проголосуйте.
Ответы
Ответ 1
В VB.NET VS 2012 эта старая проблема исправлена. Начиная с этой версии вы можете избежать корневого пространства имен с ведущим global
. Следующий код неисправен в VS 2010 и исправлен в 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
Ответ 2
Я думаю, что печальная правда заключается в том, что вы не можете. Пространства имен добавляются к корневому пространству имен. В документации нет никаких намеков на какие-либо механизмы экранирования. Существует примечание об использовании ключевого слова Global
в отношении пространств имен, но я интерпретирую эту часть текста как описание того, как обращаться к пространствам имен, а не как объявлять их.
Ответ 3
Взгляните на этот вопрос: Можно ли переопределить корневое пространство имен VB.NET?.
Суть в том, что ваш единственный вариант - оставить пустое пространство имен по умолчанию в свойствах проекта и затем обернуть все определения вашего класса/модуля в операторах пространства имен.
Ответ 4
Установка пространства имен в VB.NET почти такая же, как объявление пространства имен в С#, только с синтаксисом VB.NET! К сожалению, корневое пространство имен всегда присутствует, поэтому любые объявленные пространства имен будут находиться внутри корневого пространства имен.
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
Приведенный выше код даст вам следующее, если корневое пространство имен Test
.
Test.ConsoleApplication1
Test.System.Text
Приветствия для комментариев, ребята, размещали в памяти!
Ответ 5
I Свойства проекта проекта VB вы можете изменить корневое пространство имен. Это по умолчанию такое же, как имя проекта, но вы можете удалить его, а затем у вас есть полная структура структуры пространства имен в коде. Недостатком является то, что вы должны указать имя проекта как пространство имен всюду в коде, где вам это нужно...
Для проектов С# аналогичный параметр в свойствах проекта - это только пространство имен по умолчанию, которое переопределяется, если вы укажете пространство имен в коде. Для проектов VB он указывает пространство имен верхнего уровня, а не значение по умолчанию....