Vb.net 强制模块命名空间限定
VB.net允许您跳过具有模块名称的函数调用的限定:Vb.net 强制模块命名空间限定,vb.net,module,namespaces,Vb.net,Module,Namespaces,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
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)
如果有办法强迫您指定模块名,我不确定它是什么。但是,您可以这样做,即使其成为具有共享成员的类,而不是模块。例如:
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
此行为可以通过使用
HideModuleName
属性作为解决方法来实现-使用名称空间包装模块,并向模块添加
HideModuleName
属性
命名空间Utils
友元模块UtilsModule
公共子方法(参数作为对象)
'方法代码
端接头
端模块
结束命名空间
如果名称空间不会与文件中的Imports
一起添加,则
您需要使用名称空间名称,并且HideModuleName
属性将对intellisense隐藏模块名称
Utils.YourMethod(param)
谢谢你的回答。我想我将只移动名称空间中的所有模块。