2013-02-12 4 views
2

VB.net позволяет пропустить квалификацию вызова функции с именем модуля:сила квалификации модуль пространства имен

Public Module EvalDataFetcher 

    Public Function JoinStr(ByVal values As IEnumerable(Of String)) As String 
     ' body 
    End Function 

End Module 

А потом сделать:

Dim foo As String = JoinStr(myBars) 

Как заставить пользователей использовать полная форма? т.е. сила:

Dim foo As String = EvalDataFetcher.JoinStr(myBars) 

ответ

1

Если есть способ заставить вас указать имя модуля, я не уверен, что это будет. Однако, как вы это делаете, это сделать его классом с общими членами, а не с модулем. Например:

Public Class EvalDataFetcher 
    Public Shared Function JoinStr(ByVal values As IEnumerable(Of String)) As String 
     ' body 
    End Function 
End Module 

Теперь, когда вы вызываете метод JoinStr, вы будете вынуждены указать имя класса:

Dim foo1 As String = JoinStr(myBars) ' Won't compile 
Dim foo2 As String = EvalDataFetcher.JoinStr(myBars) ' Works 
+0

Спасибо за ваш ответ. Я думаю, что я просто переместлю все свои модули в пространства имён. – Simon

1

Такое поведение может быть достигнуто с HideModuleName атрибутом, как обходной путь - HideModuleNameAttribute
Заверните модуль с пространством имен и добавьте атрибут HideModuleName к модулю

Namespace Utils 

    <HideModuleName()> 
    Friend Module UtilsModule 

     Public Sub YourMethod(parameter As Object) 
      'Method code 
     End Sub 

    End Module 

End Namespace 

Если пространство имена не будут добавлены с Imports в файле, то вам нужно будет использовать имя пространства имен и HideModuleName атрибута скрыть имя модуля от IntelliSense

Utils.YourMethod(param) 
Смежные вопросы