扩展My命名空间的功能

直接把类或模块放入My命名空间是个方便的方法,做法非常简单,只要将类或模块定义在My命名空间中即可,例如:


Namespace My
    
Public  Module Tools
        
Public  Sub DoSomething()
            
Some code here
        End Sub

    
End Module

End Namespace
 

然后就可以直接用My.Tools来访问自定义的模块,这种是将函数做成静态的,但所有的方法都做成静态毕竟不是最佳方法,所以资料推荐的做法是:首先我们要定义自定义类,可以放在任何地方,而不必放到My命名空间中,这样就可以避免类名直接显示在My关键字后。然后,在My命名空间下,定义一个带有
HideModuleNameAttribute的模块,名称可以随便起;最后在模块中设定访问自定义类实例的属性。

‘Namespace
My

<HideModuleName()>
_
Friend Module
MyCustomModule
    Private syncRoot
As New Object

    Private _tools As
ToolsProxy

    ”’ <summary>
    ”’ Contains my custom
tools.
    ”’
</summary>
    Public ReadOnly Property Tools() As ToolsProxy
       
Get
           
‘Double check lock to ensure thread
safty.

           
If _tools Is Nothing
Then

               
SyncLock
syncRoot
                   
If _tools Is Nothing
Then

                       
_tools = New
ToolsProxy
                   
End
If
               
End
SyncLock
           
End
If

           
Return
_tools
        End
Get
    End Property
End Module

有了HideModuleName这个Attribute,它本身就不会出现在My关键字后面,而它的属性则会显示。完成以后,你会发现My.Tools这次与Visual
Basic内置在My中的对象没有任何区别了。此方法为扩展My最佳的方法,推荐使用。


利用Partial关键字可以扩展My.Application或My.Computer的功能。其对应的Class分别为MyApplication和MyComputer。