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