0

私は、かつてJavaプログラムで、そしておそらくいくつかのC#コードで見たと思われる興味深いトリックをプログラムしようとしています。

ID を整数として受け取り、それをテーブルで検索し、その行からの情報を使用してそのクラスのインスタンスを作成して返す静的メソッドがあります。問題は、特定のコンストラクターを静的関数にのみ表示し、誰にも表示しないようにしたいということです。さまざまなレベルの保護の変更を調べましたが、このタスクを達成できるものを見つけることができないようです. どうすればこれを達成できるか考えている人はいますか?

4

2 に答える 2

2

コンストラクターを非公開にしないのはなぜですか?

Public Class Foo
    Private Sub New ()
    End Sub

    Public Shared Function CreateFoo (bar As Integer) As Foo
        Return New Foo ()
    End Sub
End Class
于 2012-11-22T09:10:01.760 に答える
1

これはこれに対する「迅速な修正」ですが、探しているものとまったく同じではありません。

必要なコンストラクターを使用して継承されたクラスを作成し、クラスをその基本形式で返します。これにより、少なくともDerpを使用している限り、コンストラクターは「見えなくなります」

Public Class Herp
  Inherits Derp
    Public Sub New(ByVal Secret As String)
        _Secret = Secret
    End Sub
End Class

Public Class Derp
   Protected _Secret As String
   Public Sub New()

   End Sub
End Class

そして、これを行います:

Public Shared Function GetDerp() As Derp
   Dim derp As Derp = New Herp("Secret")
   Return Derp
End Function
于 2012-11-22T07:59:56.117 に答える