2012-02-28 8 views
-1

私はクラスライブラリを作成しています。私は、このライブラリを使用するユーザーにNewキーワードを使用させないようにしたいと考えています。ユーザー側でのコーディングは次のようになります。VB.NETクラスのインスタンス

Dim result As Integer = MyLibrary.MyObject.Sum(1,2) 

これは単純な例ですが、わかりやすい例です。難しい部分はMyObjectをインスタンス化する必要があります。これは、追跡する独自のプロパティがあるためです。

MyLibraryがユーザーのために作成されたコンテキストのようなものです。これは実行可能ですか?

+4

'New'キーワードの何が問題になっていますか? – SLaks

+0

あなたはシングルトンを探しています。それが何と呼ばれているかを知ったので、あなたはそれをGoogleにすることができます。おそらく、既に質問されている、答えられた多くの質問が出てくるでしょう。 –

答えて

0

あなたはシングルトンパターンを使用することができます

Namespace MyLibrary 
    Public Class MyObject 
     Public Shared Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer 
      Return a + b 
     End Function 
    End Class 
End Namespace 

または、VB.NETであなたはModuleを使用することができます。

Public Class MyLibrary 
    Private _MyObject As MyLibrary 
    Public ReadOnly Property MyObject As MyLibrary 
     Get 
      If _MyObject Is Nothing Then 
       _MyObject = New MyLibrary() 
      End If 

      Return _MyObject 
     End Get 
    End Property 

    Public Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer 
     Return a + b 
    End Function 
End Class 

をそれとも、キーワードSharedを使用する(C#で、それはstaticです)クラスの代わりに

Namespace MyLibrary 
    Public Module MyObject 
     Public Function Sum(ByVal a As Integer, ByVal b As Integer) As Integer 
      Return a + b 
     End Function 
    End Module 
End Namespace 
関連する問題