vb.net singleton(スタンドアロン)

Public Class Form1
    'シングルトンサンプル
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'error確認
        'dim a as new Singleton '=>errorなのでOK
        'ゆるゆるな宣言が大好きです。動的言語の癖かもなぁ
        Dim Ob As Object
        'sharedなら呼び出せる。(newを経由しないで!)
        Ob = Singleton.getInstance
        'ここでインスタンスメソッドですよ。
        Ob.test()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'ちなみにシェアードはここでも呼べる
        MessageBox.Show(CStr(Singleton.Counter))
        'これはダメ
        'Singleton.Test()
    End Sub
End Class


Public Class Singleton
    Private Shared Sing As Singleton
    'newの呼出し確認用
    Private Shared Count As Integer
    'newの隠蔽
    Private Sub New()
        'kill
    End Sub
    Public Shared Function getInstance() As Singleton
        If Sing Is Nothing Then
            Sing = New Singleton
            Count = Count + 1
        End If
        Return Sing
    End Function

    Public Shared Function Counter() As Integer
        Return Count
    End Function

    Public Sub Test()
        MessageBox.Show("インスタンスメソッド")
    End Sub
End Class

スタンドアローン版はこれで行ける。
問題はWebService経由。WebServiceにpublic shared functionなクラスメソッドがエラるので
はまり中。
チクショウ。ただこれできないとセッション情報とかoracleコネクションとかえらいことなりそうなので何とかせねば。。設計考えたら何とかなるのだろうけど。まさかの仕様か?んなわけないか。。。
コントローラー層で何とかすればいいのかしらねぇ。コントローラー層ってなに?