Есть ли способ избежать корневого пространства имен в VB? - PullRequest
13 голосов
/ 21 августа 2009
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 предложение функции: Пожалуйста, проголосуйте .

Ответы [ 5 ]

14 голосов
/ 28 июня 2013

В 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
5 голосов
/ 21 августа 2009

Я думаю, что печальная правда в том, что ты не можешь. Пространства имен добавляются в корневое пространство имен. Документация не дает никаких намеков на какие-либо экранирующие механизмы. Есть примечание об использовании ключевого слова Global в отношении пространств имен, но я интерпретирую эту часть текста как указание, как ссылаться на пространства имен, а не как объявлять их.

1 голос
/ 21 августа 2009

Посмотрите на этот вопрос: Возможно переопределить корневое пространство имен VB.NET? .

Суть в том, что ваш единственный вариант - оставить пространство имен по умолчанию пустым в свойствах проекта, а затем обернуть все определения вашего класса / модуля в операторы пространства имен.

0 голосов
/ 21 августа 2009

В свойствах проекта проекта VB вы можете изменить корневое пространство имен. По умолчанию это то же самое, что и имя проекта, но вы можете удалить его, и тогда вы получите полную мощь структуры пространства имен в коде. Недостатком является то, что вы должны указывать имя проекта в качестве пространства имен везде в коде, где вам это нужно ...

Для проектов на C # аналогичным параметром в свойствах th Project является только пространство имен по умолчанию, которое переопределяется, если вы указываете пространство имен в коде. Для проектов VB он задает пространство имен верхнего уровня, а не значение по умолчанию ....

0 голосов
/ 21 августа 2009

Установка пространства имен в VB.NET во многом аналогична объявлению пространства имен в C #, только с синтаксисом 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


Приветствую за комментарии, ребята, выкладывал на память!

...