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コネクションとかえらいことなりそうなので何とかせねば。。設計考えたら何とかなるのだろうけど。まさかの仕様か?んなわけないか。。。
コントローラー層で何とかすればいいのかしらねぇ。コントローラー層ってなに?