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)
4

2 回答 2

2

如果有办法强制您指定模块名称,我不确定它会是什么。但是,您可以这样做的方式是使其成为具有共享成员的类而不是模块。例如:

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
于 2013-02-12T19:11:01.037 回答
2

可以使用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属性将从智能感知中隐藏模块名称

Utils.YourMethod(param)
于 2015-11-04T15:20:55.353 回答