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

时间:2012-11-22 07:29:20

标签: .net vb.net

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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