2012-11-22 82 views
0

我想編寫一個有趣的技巧,我相信我曾經在Java程序中看到過,可能在一些C#代碼中。使用共享函數創建一個類的新實例,使用隱藏的構造函數

我有一個靜態方法,它將一個ID作爲一個整數,在表中查找它,然後使用該行中的信息創建並返回該類的一個實例。事情是,我想讓某個構造函數僅對我的靜態函數可見,而不是對任何人都可見。我查看了各種保護級別的修改,但似乎找不到可能完成此任務的任何修改。有沒有人有任何想法,我可能會做到這一點?

+0

請賜教我這是什麼收益:) – WozzeC

+0

「可見性」是相對的。 Net Runtime可以調用該方法,因此您可以通過反射來調用它。看到這裏例如:http://stackoverflow.com/questions/135443/how-do-i-use-reflection-to-invoke-a-private-method-in-c – igrimpe

回答

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 
+0

對,偏頭痛藥物是開始影響我的工作。你的解決方案是正確的,不介意我。 – user978122

1

這將是一個「快速解決」這個,但絕不是你正在尋找什麼。

用您需要的構造函數創建一個繼承的類,然後以其基本格式返回該類。這將使構造器「隱形」 ATLEAST只要你與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 
+0

寫得很漂亮 –

相關問題