我正在尝试编写一个有趣的技巧,我相信我曾经在 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