使用共享函数创建类的新实例,使用隐藏构造函数



我正在尝试编写一个有趣的技巧,我相信我曾经在Java程序中看到过,可能在某些C#代码中。

我有一个静态方法,它将 ID 作为整数,在表中查找它,然后使用该行中的信息来创建并返回该类的实例。 问题是,我想使某个构造函数仅对我的静态函数可见,而不是对任何人可见。我已经查看了各种保护级别的修改,但似乎找不到任何可能完成此任务的内容。有人知道我如何实现这一目标吗?

为什么不将构造函数设为私有?

Public Class Foo
    Private Sub New ()
    End Sub
    Public Shared Function CreateFoo (bar As Integer) As Foo
        Return New Foo ()
    End Sub
End Class

这将是对此的"快速修复",但绝不是您正在寻找的。

使用所需的构造函数创建一个继承的类,然后以基格式返回该类。这将使构造器"不可见",至少只要您使用 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

最新更新